I have an apache server that works as a reverse proxy in our DMZ. We have an external service that posts back to a particular URL on this server. There is a need now for this service to postback to an entirely new application, but this will most likely change again in the near future as we're in a testing phase right now.
So to resolve this, I'm trying to take the incoming postback request, /smsPostback.php
, and rewrite it to a new relative URL, /SMSHandler/Process
. This part is working.
However defined immediately below in the config, I have a ProxyPass directive to proxy all traffic to /SMSHandler
to an internal server.
These are the new lines from the apache conf file:
RewriteRule ^/smsPostback.php$ /SMSHandler/Process
##Proxy pass smshandler
ProxyPass /SMSHandler http://172.29.61.49:8080/SMSHandler
ProxyPassReverse /SMSHandler http://172.29.61.49:8080/SMSHandler
And these are the logs from the rewrite log:
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (2) init rewrite engine with requested uri /smsPostback.php
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (3) applying pattern '^/smsPostback.php$' to uri '/smsPostback.php'
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (2) rewrite '/smsPostback.php' -> '/SMSHandler/Process'
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (2) local path result: /SMSHandler/Process
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (2) prefixed with document_root to C:/hidden.com/SMSHandler/Process
172.29.61.49 - - [24/Jan/2012:18:43:36 --0500] [test.hidden.com/sid#5eace0][rid#446b770/initial] (1) go-ahead with C:/hidden.com/SMSHandler/Process [OK]
And this is the error log entry from apache:
[Tue Jan 24 18:43:36 2012] [error] [client 172.29.61.49] File does not exist: C:/fmfacilitymaintenance.com/SMSHandler
Any thoughts as to why it never reverse proxies the request, but rather tries (and fails) to serve it locally?? Thanks!
You need to add a PT
(PassThrough) to your RewriteRule so that apache takes the rewritten URI and passes it back through the URL handling pipeline (so that mod_proxy can handle it). The rule should look like this:
RewriteRule ^/smsPostback.php$ /SMSHandler/Process [L,PT]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With