Mar 1 2016
Quick Case: Apache Reverse Proxy for Tomcat, Red5, and Websockets, on Redhat Linux
Quick post outlining the steps and config I used to forward 2 different ports to 2 different servers (tomcat and red5), and to enable websockets on a Redhat server running apache 2.4.5 .
Servers/Apps and Ports:
Apache – port 80
Red5 – port 5081
Tomcat – port 8585
Current Httpd configuration location on my own redhat server: /etc/httpd/conf/httpd.conf
Below is my httpd configuration:
Listen 80 Listen 5080 IncludeOptional conf.d/*.conf LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so <VirtualHost *:80> ProxyPass /open/ http://localhost:5080/open/ ProxyPassReverse /open/ http://localhost:5080/open/ ProxyPass /idle/ http://localhost:5080/idle/ ProxyPassReverse /idle/ http://localhost:5080/idle/ ProxyPass /fcs/ http://localhost:5080/fcs/ ProxyPassReverse /fcs/ http://localhost:5080/fcs/ ProxyPass /close/ http://localhost:5080/close/ ProxyPassReverse /close/ http://localhost:5080/close/ ProxyPass /vod/ http://localhost:5080/vod/ ProxyPassReverse /vod/ http://localhost:5080/vod/ ProxyPass /call ws://localhost:8585/call ProxyPassReverse /call ws://localhost:8585/call ProxyPass /call/ ws://localhost:8585/call/ ProxyPassReverse /call/ ws://localhost:8585/call/ ProxyPass / http://localhost:8585/ ProxyPassReverse / http://localhost:8585/ RewriteEngine on RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] RewriteRule .* ws://localhost:8585%{REQUEST_URI} [P] </VirtualHost> <VirtualHost *:5080> #ProxyRequests On ProxyPass / http://localhost:5081/ ProxyPassReverse / http://localhost:5081/ </VirtualHost>
Security Problems:
There is a chance security will stop apache from binding to a non default port.
[root@localhost red5105]# systemctl status httpd.service httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: failed (Result: exit-code) since Tue 2016-03-01 12:29:30 EET; 16s ago Docs: man:httpd(8) man:apachectl(8) Process: 31008 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE) Process: 31005 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 31005 (code=exited, status=1/FAILURE)
See stackoverflow page following: http://stackoverflow.com/questions/17079670/httpd-server-not-started-13permission-denied-make-sock-could-not-bind-to-ad/22441885#22441885
I did not have issues with apache reverse proxy modules or needing to uncomment anything in the default apache config. If you do have problems you may need to.
Websocket Troubleshooting (Remaining Issue for Firefox):
I am waiting for a response to a stackoverflow question related to fixing websockets for firefox: