Apache переписать потом Proxy Pass - PullRequest
5 голосов
/ 25 января 2012

У меня есть сервер Apache, который работает в качестве обратного прокси в нашей DMZ.У нас есть внешний сервис, который отправляет сообщения на определенный URL на этом сервере.Сейчас необходимо, чтобы эта служба отправила обратно в совершенно новое приложение, но, скорее всего, это снова изменится в ближайшем будущем, так как сейчас мы находимся на этапе тестирования.

Итак, чтобы решить эту проблему, япытаюсь принять входящий запрос обратной передачи /smsPostback.php и переписать его на новый относительный URL /SMSHandler/Process.Эта часть работает.

Однако, как указано ниже в конфигурации, у меня есть директива ProxyPass для передачи всего трафика на /SMSHandler на внутренний сервер.

Это новые строки изФайл 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

А это журналы из журнала перезаписи:

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]

А это запись в журнале ошибок от apache:

[Tue Jan 24 18:43:36 2012] [error] [client 172.29.61.49] File does not exist: C:/fmfacilitymaintenance.com/SMSHandler
* 1018Есть какие-либо мысли о том, почему он никогда не обратится к прокси-серверу, а скорее попытается (и не сможет) обслуживать его локально?Спасибо!

1 Ответ

14 голосов
/ 25 января 2012

Вам нужно добавить PT (PassThrough) в ваш RewriteRule, чтобы apache взял перезаписанный URI и передал его обратно через конвейер обработки URL (чтобы mod_proxy мог его обработать).Правило должно выглядеть так:

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