Setup mod_proxy on apache http server

ApacheTomcatApache2Protocol Handler

Apache Problem Overview


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?

Apache Solutions


Solution 1 - Apache

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. :)

Solution 2 - Apache

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!

Solution 3 - Apache

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1386101View Question on Stackoverflow
Solution 1 - Apacheuser1386101View Answer on Stackoverflow
Solution 2 - ApacheHorenView Answer on Stackoverflow
Solution 3 - ApacheGregView Answer on Stackoverflow