I am trying configure my Apache 2.4 to connect to my backend Tomcat 8.0.28. in my Mac OS X El Capitan.
I used NameBased VirtualHost with AJP support. config file apache_serviceproxy.conf located: /Library/Server/Web/Config/Proxy
<VirtualHost 10.0.1.100:80>
ProxyPreserveHost On
ServerName www.storageway.com.au
ServerAlias storageway.com.au
ServerAdmin [email protected]
ProxyPass / ajp://127.0.0.1:8009/StorageWayServer/
ProxyPassReverse / ajp://127.0.0.1:8009/StorageWayServer/
</VirtualHost>
Tomcat app context is: http://localhost:8080/StorageWayServer, access Tomcat from LAN, every thing works fine. But when I tried to request over Internet, apache 2.4 call Tomcat through AJP not working well.
Tomcat received html request () from apache AJP properly but from then, every inclusive css, javascript and image in the html with wrong request url, it is simple double application context name.
And this is my Tomcat access log:
148.251.45.185 - - [31/Oct/2015:14:26:07 +1100] "GET /StorageWayServer/ HTTP/1.1" 200 19098
148.251.45.185 - - [31/Oct/2015:14:26:07 +1100] "GET /StorageWayServer/StorageWayServer/dojo-release-1.10.4/dojo/resources/dojo.css HTTP/1.1" 404 1173
148.251.45.185 - - [31/Oct/2015:14:26:08 +1100] "GET /StorageWayServer/StorageWayServer/css/style.css HTTP/1.1" 404 1113
148.251.45.185 - - [31/Oct/2015:14:26:08 +1100] "GET /StorageWayServer/StorageWayServer/dojo-release-1.10.4/dijit/themes/claro/claro.css HTTP/1.1" 404 1183
148.251.45.185 - - [31/Oct/2015:14:26:09 +1100] "GET /StorageWayServer/StorageWayServer/css/dashboard.css HTTP/1.1" 404 1121
148.251.45.185 - - [31/Oct/2015:14:26:09 +1100] "GET /StorageWayServer/StorageWayServer/css/storageway_homeabout.css HTTP/1.1" 404 1143
148.251.45.185 - - [31/Oct/2015:14:26:09 +1100] "GET /StorageWayServer/StorageWayServer/dojo-release-1.10.4/dojo/dojo.js HTTP/1.1" 404 1151
148.251.45.185 - - [31/Oct/2015:14:26:10 +1100] "GET /StorageWayServer/StorageWayServer/images/storageway_logo.png HTTP/1.1" 404 1139
148.251.45.185 - - [31/Oct/2015:14:26:10 +1100] "GET /StorageWayServer/StorageWayServer/images/icons/publish.png HTTP/1.1" 404 1135
148.251.45.185 - - [31/Oct/2015:14:26:10 +1100] "GET /StorageWayServer/StorageWayServer/images/icons/search_engine.png HTTP/1.1" 404 1147
148.251.45.185 - - [31/Oct/2015:14:26:10 +1100] "GET /StorageWayServer/StorageWayServer/images/icons/search33.png HTTP/1.1" 404 1137
148.251.45.185 - - [31/Oct/2015:14:26:10 +1100] "GET /StorageWayServer/StorageWayServer/images/button_hover.gif HTTP/1.1" 404 1133
148.251.45.185 - - [31/Oct/2015:14:26:11 +1100] "GET /StorageWayServer/StorageWayServer/images/button_span_hover.gif HTTP/1.1" 404 1143
If I request it from LAN by access Tomcat directly, it works fine, log as:
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/images/icons/publish.png HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/images/icons/search_engine.png HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/images/icons/search33.png HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/dojo-release-1.10.4/dijit/dijit.js HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/images/button_span_hover.gif HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/images/button_hover.gif HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/dojo-release-1.10.4/dijit/themes/claro/images/spriteArrows.png HTTP/1.1" 304 -
10.0.1.222 - - [31/Oct/2015:14:58:53 +1100] "GET /StorageWayServer/dojo-release-1.10.4/dijit/themes/claro/form/images/buttonArrows.png HTTP/1.1" 304 -
I tried to find some help from google and tried using
RedirectMatch /StorageWayServer http://www.storageway.com.au/
but I never take the extra application context off from the request url.
Any advice or experience welcome.
Have a good week end!
Don't change the context path in the ProxyPass directive. There are many, many ways to shoot yourself in the foot when you do this.
At a guess, the links on your pages are absolute so they include the context path. When the client then requests these, the ProxyPass directive adds the context path again.
You have three choices:
ProxyPass / ajp://127.0.0.1:8009/
ProxyPass /StorageWayServer/ ajp://127.0.0.1:8009/StorageWayServer/
I've seen large organisations spend huge amounts of time and money an option 3 and I really do not recommend it.