在Apache HTTP服务器上设置mod_proxy

我想使用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有效。 如果您正在使用mod_proxy的DSO版本,请确保代理子模块包含在使用LoadModule的configuration中。

access_log的最后一项是:

  127.0.0.1  -   -  [04 / Jul / 2013:14:17:00 -0400]“GET / ROOT HTTP / 1.1”500 528

任何想法,我在做什么错在这里?

所以花了一些时间,但我想出了办法。 还有一个模块需要加载。 这就是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 

这是肯定的。 🙂

由于容易忽视,请关注@ muka的评论:

 sudo a2enmod proxy sudo a2enmod proxy_http sudo service apache2 restart 

确保启用模块proxyproxy_http

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