是否可以在 ProxyPass 中使用“%{HTTP_HOST}”?

Roy*_*nik 5 apache mod-rewrite apache2 mod-proxy proxypass

我正在尝试使用 apache2 和 mod_proxy 实现透明代理,但目前它不执行任何操作。只是将流量转发到正确的“主机”。

我不希望它依赖于主机 - 但希望它是动态的,因此它适用于所有主机。我尝试这样做:

RewriteEngine on
RewriteLogLevel 5
RewriteLog "/var/log/apache2/rewrite.log"
RewriteRule ^(.*)$ $1
ProxyPass / http://$1
Run Code Online (Sandbox Code Playgroud)

我还尝试了其他几种方法(没有效果)。有什么方法可以从标头访问“主机”并在 ProxyPass 指令中使用它?

在 nginx 中,我会使用 $host、$remote_addr 等。有什么方法可以在 apache 上替换它吗?

我需要的是能够访问 ProxyPass 命令内的 %{HTTP_HOST}、%{REQUEST_URI} 和 %{SERVER_PORT} 。

Roy*_*nik 1

只是回答我自己的问题:

我错过了两件事:

配置应该是:

RewriteEngine On
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [P]
Run Code Online (Sandbox Code Playgroud)

不要忘记在虚拟目录中启用继承:

RewriteEngine On
RewriteOptions Inherit
Run Code Online (Sandbox Code Playgroud)