61

我想使用 apache web 服务器从我的 tomcat 服务器反向代理 web 服务。我已经修改了 httpd.conf

LoadModule proxy_module modules/mod_proxy.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

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

我的 Tomcat 服务器在端口 8080 上运行,现在当我运行 localhost/ROOT 时,我收到错误 500 内部服务器错误。

中的最后一个条目error_log是:

[Thu Jul 04 14:17:00.097359 2013] [proxy:warn] [pid 18980:tid 4476780544] [client 127.0.0.1:50525] AH01144:没有协议处理程序对 URL /ROOT 有效。如果您使用的是 DSO 版本的 mod_proxy,请确保代理子模块包含在使用 LoadModule 的配置中。
中的最后一项access_log是:
127.0.0.1 - - [04/Jul/2013:14:17:00 -0400]“GET /ROOT HTTP/1.1”500 528

知道我在这里做错了什么吗?

4

3 回答 3

99

所以花了一些时间,但我想出了办法。还有一个模块需要加载。这就是 httpd.conf 的样子

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

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

这肯定有效。:)

于 2013-07-04T19:07:23.267 回答
68

由于很容易被忽略,请注意@muka 的评论:

sudo a2enmod proxy  
sudo a2enmod proxy_http  
sudo service apache2 restart

确保同时启用模块proxyproxy_http

于 2014-09-25T15:44:51.757 回答
16

除了其他很好的答案之外,如果您要代理到 https 端点,您需要启用 mod_ssl 并添加SSLProxyEngine on到您的虚拟主机

于 2016-03-29T18:05:26.843 回答