У меня 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/
Я не уверен, зачем вам эта информация, поэтому не могу сказать наверняка, но разве это не решит вашу проблему?