If your application needs one of the webpages served from external sites, you can configure Apache as a proxy and filter specific URL patterns to be forwarded to external site, and the rest to the tomcat serving your web application.
My requirements were:
1. Need a uniform/transparent way to integrate external sites into my web application.
2. There should not be any URL change in the browser or should not issue a redirect but mimic forward for a specific URL pattern.
3. Ability to append additional URL parameters before forwarding to external site. [eg: my id and password that the external site expects as URL parameters which I don't want to expose]
For that I can configure my apache server as follows:
NameVirtualHost *:9090
<virtualhost *:9090="">
ServerName localhost
ProxyRequests Off
ProxyPreserveHost On
<proxy *="">
Order deny,allow
Allow from all
</proxy>
RewriteEngine On
RewriteRule ^/map-service/loadMap.do(.*) http://192.168.111.111/some-service/load.do?%{QUERY_STRING}&someparam=aaa [P]
RewriteRule ^/map-service/(.*) http://192.168.111.111/some-service/$1?%{QUERY_STRING} [P]
</virtualhost>
Note:
The parameter [P] is important as it makes the rewrite rule as Proxy forward else it behaves like a URL rewrite, sending location header to the browser.
%{QUERY_STRING} is a placeholder for input arguments
$1 - the first regex match group (.*) in our case. which matches any part of the remaing context path after /map-service/
No comments:
Post a Comment