Apache VirtualHost 多种传输协议

Apache VirtualHost 多种传输协议

我正在尝试使用带有 mod_proxy 的 VirtualHost 在我的服务器上为正在运行的另一台服务器添加身份验证层。身份验证和基本加载工作正常,但主页需要使用不同的第 5 层协议,即 ws:// 而不是 http://。在 ProxyPass(Reverse) 指令中,我必须提供要使用的第 5 层协议。我尝试过不提供协议,而是在开始标记中提供两个具有不同协议的不同虚拟主机,例如

<VirtualHost http://192.168.192.172:5440>

<VirtualHost ws://192.168.192.172:5440>

这两种方法都无法加载服务器。我是否可以添加其他指令,或者使用其他方法来设置 VirtualHost?我当前的 VirtualHost 配置是:

<VirtualHost *:5440>
    ProxyPass / "http://192.168.192.172:8080"
    ProxyPassReverse / "http://192.168.192.172:8080"
    ProxyPreserveHost On
</VirtualHost>

提前致谢!

答案1

Virtualhost 不支持完整的 URL 方案,就像前两个例子一样,Virtualhost 只接受 ip:port 或 *:port 甚至默认:port,但不要使用名称或完整的 URL 方案。

正确示例:

<Virtualhost 192.168.192.172:5440>
<Virtualhost 192.168.192.172:5440 192.168.192.172:5441>
<Virtualhost *:5440>
<VirtualHost _default_:5440>


在最后一个虚拟主机中,您需要匹配 ProxyPass 中的斜杠,如果源中有一个结尾斜杠,则将其添加到目标,如果没有,则不要:

ProxyPass / http://192.168.192.172:8080/
ProxyPassReverse / http://192.168.192.172:8080/

或者

ProxyPass /something http://192.168.192.172:8080/something

对于 ws,使用修改代理服务器

例如:

ProxyPass /ws/ ws://192.168.192.172/
ProxyPass /wss/ wss://192.168.192.172/

相关内容