使用 Confluence 和虚拟主机以及 mod_proxy

使用 Confluence 和虚拟主机以及 mod_proxy

我在测试服务器上安装了最新版本的 Confluence。我使用 ajp 配置了 apache。但我遇到了一个问题,当我登录 Confluence 时,我收到以下错误消息:

Not Found
The requested URL / / homepage.action was not found on this server.

该问题似乎是已知的,我发现了以下链接: http://confluence.atlassian.com/display/DOC/使用+Apache+with+virtual+hosts+and+mod_proxy

但不幸的是,转发没有帮助,我仍然收到错误消息。有人知道我该如何解决这个问题吗?

我已设置以下 Apache 配置:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so

<IfModule proxy_http_module>
ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<Location />
Order allow,deny
Allow from all
</Location>

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

</IfModule>

答案1

从表面上看,您的配置是正确的,假设已安装 Confluence 并且正确配置了 Tomcat。

在您的服务器上,如果您输入以下内容,您会得到什么:

curl -D /dev/stderr http://localhost:8080/

那这个怎么样:

curl -D /dev/stderr http://localhost:8080/homepage.action

你说:

我使用 ajp 配置了 apache。

请注意,目前您没有使用 ajp。您正在使用 进行代理http://;如果您要使用 ajp,您的配置将如下所示:

ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/

但是,这不应该实质性地影响您的问题(对于简单的操作,通过http或访问 tomcatajp可以让您到达同一个地方)。

编辑:您提供的输出curl表明 Confluence 正在响应正确的 URL。事实上,如果我采用您的 Apache 配置并将其逐字放到我的服务器上,它就可以正常工作。

当您尝试连接到http://你的服务器/,Apache 访问日志中显示什么?错误日志?

答案2

谢谢你的帖子。我执行命令并得到以下结果:

1) curl -D /dev/stderr h**p://localhost:8080/

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1 
Set-Cookie: JSESSIONID=838E3DA5D23E1457669E843CA2CFBBBA; Path=/; HttpOnly
Location: http://localhost:8080/homepage.action
Content-Type: text/html
Content-Length: 0
Date: Mon, 14 Feb 2011 21:42:49 GMT

2) curl -D /dev/stderr h**p://localhost:8080/homepage.action

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Cache-Control: no-cache, must-revalidate 
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1297720104335
Set-Cookie: JSESSIONID=F6941E06E83ABB538A8341181AED3E6A; Path=/; HttpOnly
Location: http://localhost:8080/login.action;jsessionid=F6941E06E83ABB538A8341181AED3E6A?os_destination=%2Fhomepage.action
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Mon, 14 Feb 2011 21:48:24 GMT

老实说,我不知道如何处理“curl”输出。

你说得对,我通常使用 AJP-Proxy 的 8009 端口,但 Confluence 上没有 AJP 连接器,我不想安装额外的连接器。我也这么认为,这不是问题的原因。

答案3

apache error_log 中没有任何内容,而我登录时 apache acces_log 中只出现这一行:

IP 地址 - - [16/Feb/2011:18:02:14 +0100] "POST /dologin.action HTTP/1.1" 302 724 "https://wiki.example.com/login.action?os_destination=%252Fhomepage.action“Mozilla/5.0 (xxx; U; xxx; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13”

答案4

我找到了问题所在。在 apache 中,我设置了从端口 80 到 443 的重定向。但是 Confluence 生成http://-地址。现在我将重写规则从 [R=301] 更改为 [R=301,NE],现在可以正常工作了 :)

感谢您的帮助。

问候

马库斯

相关内容