在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
确保启用模块proxy
和proxy_http
!
除了其他好的答案之外,如果你正在代理https端点,你需要启用mod_ssl并将SSLProxyEngine on
添加到你的虚拟主机