最近我从使用端口号转向 apache 代理,现在我收到以下浏览器控制台错误:
VM6:1 获取400(错误请求)
VM6:1 后400(错误请求)
我的 apache 日志文件充满了这些消息:
[Mon Mar 02 18:25:03.199849 2020] [proxy:error] [pid 28494] (111)连接被拒绝:AH00957:HTTP:尝试连接到 127.0.0.1:20005 (localhost) 失败
[Mon Mar 02 18:25:03.199892 2020] [proxy:error] [pid 28494] AH00959: ap_proxy_connect_backend 禁用 (localhost) 的工作人员 5 秒
[Mon Mar 02 18:25:03.199898 2020] [proxy_http:error] [pid 28494] [client 71.223.254.40:50269] AH01114:HTTP:无法连接到后端:本地主机,引荐来源:https://example.com/proxyPort20005/ https://example.com/proxyPort20005/
--
我确实发现使用端口和代理之间有一个有趣的区别。使用端口号,当我输入以下内容时:
这些结果返回到浏览器窗口中:
96:0{"sid":"XXXX","升级":["websocket"],"pingInterval":25000,"pingTimeout":5000}
但是当我使用代理尝试相同的操作时:
我看到可疑的结果,与我使用端口号时非常不同:
{"code":1,"message":"会话 ID 未知"}
奇怪的是,除了所有错误消息之外,一切似乎都工作正常。
我的 httpd.conf 配置如下:
## 2020-03-02 - tried acquire
## 2020-03-02 - tried disablereuse=on
<Location /proxyPort20005/>
ProxyPass http://localhost:20005/ Keepalive=On retry=5 timeout=600
ProxyPassReverse http://localhost:20005/
</Location>
有人对我下一步可以尝试什么有什么建议吗?
非常感谢大家。
经过大量时间和努力,我有两个解决方案:
## thank you lopezdonaque @ https://github.com/socketio/socket.io/issues/1696
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteRule /proxyPort3030/(.*) ws://localhost:3030/$1 [P,L]
<Location /proxyPort3030/>
ProxyPass http://localhost:3030/
## it seems to work fine without proxyPassReverse ??
ProxyPassReverse http://localhost:3030/
</Location>
const socket = io.connect
(
{ 'path' : window.location.pathname + 'socket.io'
, 'transports' : ['websockets', 'polling']
}
);
这也有效,但是,我希望 WebSockets 和轮询都能工作,这个例子只有轮询:
<IfModule mod_proxy.c>
<Proxy *>
Order allow,deny
allow from all
</Proxy>
</IfModule>
ProxyPass /proxyPort3030/ http://localhost:3030/
ProxyPassReverse /proxyPort3030/ http://localhost:3030/
ProxyRequests off
const socket = io.connect
(
{ 'path' : window.location.pathname + 'socket.io'
, 'transports' : ['polling']
}
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)