我在主机Server1
和Server2
上运行了两个Apache服务器Host1
和Host2
。两者都启用了SSL。在Host2
上,还有另一个用C语言编写的服务器Server3
侦听端口5555.此服务器仅侦听环回接口(它仅侦听本地主机,即Host2
)。我已将以下内容添加到Server2
的httpd.conf中:
<Location /specialserver>
ProxyPass http://localhost:5555
Order allow,deny
Allow from all
ProxyPassReverse http://localhost:5555
</Location>
在Server1
上托管了一个网站,其中包含指向/specialserver
的链接以及Server2
上所有其他链接。我想将REMOTE_USER和其他一些环境变量的值传递给/ specialserver。我不能将它们作为单独的变量传递,因此我必须连接所需环境变量的值并将它们作为单个变量传递。为此,我在mod_rewrite
和Server1
的httpd.conf文件中添加了以下Server2
命令:
RewriteCond %{LA-U:REMOTE_USER}*%{REMOTE_ADDR}*%{QUERY_STRING} (.*)
RewriteRule (.*) - [E=X-REMOTE_INFO:%1]
这将连接环境变量并将结果分配给名为X-REMOTE_INFO
的环境变量。此外,我已修改位置块以将此值添加到请求标头,如下所示:
<Location /specialserver>
ProxyPass http://localhost:5555
Order allow,deny
Allow from all
ProxyPassReverse http://localhost:5555
RequestHeader merge X-REMOTE_INFO %{X-REMOTE_INFO}e
</Location>
我知道Server2
上REMOTE_USER的值是正确的(我检查了值)。我的自定义标头和我的自定义环境变量也具有正确的值(REMOTE_USER * REMOTE_ADDR * QUERY_STRING)。但是,当环境变量达到Server3
时,它会丢失REMOTE_USER的值。而不是将值设为REMOTE_USER * REMOTE_ADDR * QUERY_STRING现在只有* REMOTE_ADDR * QUERY_STRING。 X-REMOTE_INFO中不再提供REMOTE_USER的值。我尝试将merge
更改为add
和set
。我也试过没有预见(即没有LA:U
)。价值仍然丢失。当单击指向/ specialserver的链接时,似乎再次计算X-REMOTE_INFO的值。 Server3
没有REMOTE_USER的值,因此该值为空。如何将Server2
上显示的X-REMOTE_INFO值传递给Server3
?
我的要求是将REMOTE_USER,REMOTE_ADDR和QUERY_STRING的值从Server2
传递给Server3
作为单个变量。我已经完成了所有这些以满足这一要求。