Reputation: 1944
I wanted to reverse proxy a web service from my tomcat server using apache web server. I have modified the 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
My Tomcat server runs on port 8080, now when I run localhost/ROOT, I get error 500 internal server error.
This last entry in the error_log
is:
[Thu Jul 04 14:17:00.097359 2013] [proxy:warn] [pid 18980:tid 4476780544] [client 127.0.0.1:50525] AH01144: No protocol handler was valid for the URL /ROOT. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.The last entry in the
access_log
is:
127.0.0.1 - - [04/Jul/2013:14:17:00 -0400] "GET /ROOT HTTP/1.1" 500 528
Any idea on what I am doing wrong here?
Upvotes: 62
Views: 90327
Reputation: 12847
In addition to the other fine answers, if you're proxying to an https endpoint, you need to enable mod_ssl and add SSLProxyEngine on
to your vhost
Upvotes: 17
Reputation: 11382
Since it's easy to overlook, pay attention to @muka's comment:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service apache2 restart
Make sure to enable both modules proxy
and proxy_http
!
Upvotes: 68
Reputation: 1944
So it took some time but I figured out the way to do it. There is one more module which needs to be loaded. This is what the httpd.conf looks like
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
This works for sure. :)
Upvotes: 99