[编辑]:FWI,感谢 Vadym 在下面的评论,我发现我忘记mod_proxy_http
在 Plesk 服务器上启用了。加载此模块(与 一起mod_proxy
)修复了原始错误。
我正在尝试配置反向代理规则vhost.conf
。我在 Ubuntu-8.04 上有 Apache-2.2.8,由 Plesk-10.4.4 监控。
我想要实现的是定义一个反向代理规则,将所有流量延迟到 - 比如 -http://example.com/tomcat/
在端口 8080 上运行的 Tomcat 服务器。我已经mod_rewrite
将mod_proxy
其加载到 Apache 中。据我了解mod_proxy
,输入以下规则/var/www/vhosts/mydomain/conf/vhost.conf
应该有效:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests off
RewriteRule ^/tomcat/(.*)$ http://example.com:8080/$1 [P]
但是,当我请求上述 URL 时,我收到 HTTP 500:内部服务器错误。(注意:我决定使用重写规则,以便至少记录一些信息。)
我做了大量mod_rewrite
日志记录,并在日志中发现以下条目 [注意:由于新用户帖子中最多只能有 2 个 URL,我已修改以下所有 URL,使它们在 http: 后仅包含 1 个斜线。如果您怀疑有拼写错误:这是故意的):
192.0.2.23 - - [19/Mar/2012:16:42:59 +0100] [example.com/sid#b06ab8][rid#1024af8/initial] (2) init rewrite engine with requested uri /tomcat/testApp/
192.0.2.23 - - [19/Mar/2012:16:42:59 +0100] [example.com/sid#b06ab8][rid#1024af8/initial] (3) applying pattern '^/tomcat/(.*)$' to uri '/tomcat/testApp/'
192.0.2.23 - - [19/Mar/2012:16:42:59 +0100] [example.com/sid#b06ab8][rid#1024af8/initial] (2) rewrite '/tomcat/testApp/' -> 'http:/example.com:8080/testApp/'
192.0.2.23 - - [19/Mar/2012:16:42:59 +0100] [example.com/sid#b06ab8][rid#1024af8/initial] (2) forcing proxy-throughput with http:/example.com:8080/testApp/
192.0.2.23 - - [19/Mar/2012:16:42:59 +0100] [example.com/sid#b06ab8][rid#1024af8/initial] (1) go-ahead with proxy request proxy:http:/example.com:8080/testApp/ [OK]
这表明重写和代理部分处理正常;但代理请求仍然会产生 500 错误。然而:
- 直接通过以下地址访问 testApp
http://example.com:8080/testApp
做工作。 - 相同的设置做在我的本地计算机上工作。
还有其他东西(可能与 Plesk 相关?)我应该配置吗?
答案1
ErrorLog里有什么线索吗?
mod_rewrite
您是否尝试过不这样做(只是mod_proxy
)这样的事情:
<Location /tomcat>
ProxyPass http://example.com:8080/
ProxyPassReverse http://example.com:8080/
</Location>