apache mod_proxy 和原始 URL

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>

答案1

我不确定是否要设置标头,因为这看起来有点复杂。但您可以简单地在代理中包含相同的 URI,如下所示:

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

我不确定您为什么需要这些信息,所以我不能确定,但​​这不能解决您的问题吗?

相关内容