2012-01-25 14 views
5

Mam serwer apache, który działa jako odwrotny serwer proxy w naszym DMZ. Mamy zewnętrzną usługę, która przesyła z powrotem do konkretnego adresu URL na tym serwerze. Teraz ta usługa wymaga odświeżenia do zupełnie nowej aplikacji, ale najprawdopodobniej ulegnie ona zmianie w najbliższej przyszłości, ponieważ jesteśmy teraz w fazie testowania.Przepustka Apache, a następnie Proxy Pass

Aby rozwiązać ten problem, próbuję odebrać przychodzące żądanie odświeżenia poczty, /smsPostback.php, i przepisać je na nowy względny adres URL, /SMSHandler/Process. Ta część działa.

Jakkolwiek zdefiniowałem bezpośrednio poniżej w konfiguracji, mam dyrektywę ProxyPass do proxy całego ruchu do /SMSHandler do wewnętrznego serwera.

Są to nowe linie z pliku apache conf:

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 

A oto logi z dziennika przepisywania:

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] 

I to jest wpis w dzienniku błędów z apache:

[Tue Jan 24 18:43:36 2012] [error] [client 172.29.61.49] File does not exist: C:/fmfacilitymaintenance.com/SMSHandler 

Wszelkie przemyślenia na temat tego, dlaczego nigdy nie odwracają żądań, ale raczej próbują (i zawodzą) podawać to lokalnie? Dzięki!

Odpowiedz

14

Musisz dodać PT (PassThrough) do swojej RewriteRule, aby apache przejął przepisany identyfikator URI i przekazał go z powrotem przez potok obsługi URL (tak, aby mod_proxy mógł go obsłużyć). Reguła powinna wyglądać tak:

RewriteRule ^/smsPostback.php$ /SMSHandler/Process [L,PT] 
+0

Dzięki Jon! Tak to zrobiło! – Matt

+2

możesz upuścić 'Last', co jest implikowane przez Passthrough http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_pt – oberhamsi

Powiązane problemy