【发布时间】:2013-09-18 01:02:44
【问题描述】:
注意:更新了配置并在 websocket 路径中添加了斜杠。还是一样的问题
是否可以在带有mod_proxy_wstunnel 的 Apache 反向代理后面使用 go-websocket?
我尝试过,但没有成功。
我尝试在 Apache 反向代理后面使用the Chat example(启用了mod_proxy_wstunnel)。它不起作用。代理成功了,而websocket部分完全不行。
我的 Apache 配置如下所示:
<VirtualHost *:80>
DocumentRoot /var/www/foobar
ServerName foobar.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ProxyPass /ws/ ws://localhost:8080/ws/
ProxyPassReverse /ws/ ws://localhost:8080/ws/
ErrorLog logs/error_log-foobar
CustomLog logs/access_log-foobar common
LogLevel debug
</VirtualHost>
当然,我在 8080 端口上运行聊天服务器。我已经使用 SSH 隧道对其进行了测试,一切正常。然后我转向 Apache。
我第一次尝试时,javascript 控制台报错:
NetworkError: 403 Forbidden - http://foobar.com/ws/
请求似乎停留在源检查中。 然后我在注释掉原点检查后再次尝试,它得到了这个:
NetworkError: 400 Bad Request - http://foobar.com/ws/
聊天服务器似乎根本没有收到升级请求。
我应该如何调试这个? 我应该从哪里开始寻找?
【问题讨论】:
-
尾部斜线
/重要吗?只是猜测...... -
没有。我想不是。我刚刚尝试在所有内容中添加斜杠。问题还是一样。
-
我想两台服务器都有日志记录,他们说什么?
-
httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass 表示
ProxyPass指令按顺序匹配,因此您的/ws/可能会被/遮蔽。如果您更改订单,您会得到不同的行为吗? -
谢谢!顺序很重要。
标签: apache websocket go mod-proxy