Назад | Перейти на главную страницу

apache mod_proxy и исходный URL

У меня apache 2.2 mod_proxy по большей части работает хорошо, но у меня проблемы с некоторыми из наших новых инструментов.

У нас есть файл конфигурации для одного сервера ниже.

Наша проблема в том, что когда пользователь переходит на web.example.com/app1/prd/test.php, конечное приложение видит только несколько вещей ... текущий URL-запрос, который он видит, - это webprd.example.local: 8194 / test.php и заголовок: X-Forwarded-Host: web.example.com

Как я могу написать заголовок в запросе, который будет включать полный URL / URI, который имел исходный запросчик? Эта информация нужна приложению для нашего использования. Что-то вроде X-Forwarded-URI: web.example.com/app1/prd/test.php
Или мы можем даже пропустить хост, поскольку это другой заголовок.

<VirtualHost xxx.xxx.xxx.xxx:443>
        #removed some ssl and log related settings.
        ProxyPreserveHost On
        ProxyBadHeader Ignore
        ServerName web.example.com


        #app1
        ProxyPass /app1/dev/ https://webdev.example.local:4433/ timeout=600
        ProxyPassReverse /app1/dev/ https://webdev.example.local:4433/
        ProxyPass /app1/test/ http://webtest.example.local:8194/ timeout=600
        ProxyPassReverse /app1/test/ http://webtest.example.local:8194/
        ProxyPass /app1/prd/ http://webprd.example.local:8194/ timeout=600
        ProxyPassReverse /app1/prd/ http://webprd.example.local:8194/
        ProxyPass /app1/ http://webprd.example.local:8194/ timeout=600
        ProxyPassReverse /app1/ http://webprd.example.local:8194/
        #app2
        ProxyPass /app2/dev/ http://webdev.example.local:16222/ 
        ProxyPassReverse /app2/dev/ http://webdev.example.local:16222/
        ProxyPass /app2/test/ http://webtest.example.local:16222/ 
        ProxyPassReverse /app2/test/ http://webtest.example.local:16222/
</VirtualHost>

Я не уверен в настройке заголовка, так как это кажется немного запутанным. Но вы можете просто включить тот же URI в прокси, как в:

ProxyPass /app1/prd/ http://webprd.example.local:8194/app1/prd/ timeout=600
ProxyPassReverse /app1/prd/ http://webprd.example.local:8194/app1/prd/

Я не уверен, зачем вам эта информация, поэтому не могу сказать наверняка, но разве это не решит вашу проблему?