我有一个运行在WSS://端口9000上的本地web套接字服务器。在同一台服务器上,我也运行了apache。
当我尝试从我的远程客户端通过WSS直接连接到端口9000时,如下所示:
wss://myserver:9000
它工作得很好。但是,我阻止了路由器上的9000端口,并尝试通过apache (在SSL上运行)访问它。
当我尝试访问wss://myserver/时
我可以在Apache中看到它发出GET的日志,但我的web套接字服务器没有接收到连接。
我已经阅读了各种SO主题,我想我的排序是正确的。
详细信息:
Apache版本:Server version: Apache/2.4.7 (Ubuntu)
sudo apache2ctl -M显示了运行proxy_module (shared) proxy_http_module (shared) proxy_wstunnel_module (shared)的proxy_*模块
Apache配置:(VirtualHost中的相关行)
ProxyPass / wss://localhost:9000/
ProxyPassReverse / wss://localhost:9000/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>请注意,我的本地web套接字服务器和Apache都配置为使用相同的证书
(我不确定是否需要代理*部分,但我在一个SO线程中看到了它)
下面是调试日志:
http://pastebin.com/gqVp3Pz5
谢谢
发布于 2015-10-10 19:45:59
似乎在默认情况下,当需要对SSL进行端到端隧道传输时,Apache wstunnel并不起作用。如果Apache终止WSS,然后在本地服务器上执行WS,则会起作用。
我找到了这个线程tunneling secure websocket connections with apache,它描述了如何重新编译Apache以允许端到端的WSS隧道。
我目前已经决定不做apache隧道,并直接为我的事件服务器打开防火墙端口,因为我不希望我的用户有重新编译Apache的倾向。
https://stackoverflow.com/questions/33025042
复制相似问题