通过apache代理运行socket.io时出现问题
最近,我从使用端口号改为使用apache代理,现在出现以下浏览器控制台错误: VM6:1 GET 400(错误请求) VM6:1 POST 400(错误请求) 我的apache日志文件中充满了以下消息: [Mon-Mar 02 18:25:03.199849 2020][proxy:error][pid 28494](111)连接被拒绝:AH00957:HTTP:尝试连接到127.0.0.1:20005(本地主机)失败 [Mon-Mar 02 18:25:03.199892 2020][proxy:error][pid 28494]AH00959:ap_proxy_connect_后端禁用(本地主机)的工作程序5s [Mon-Mar 02 18:25:03.199898 2020][proxy_http:error][pid 28494][client 71.223.254.40:50269]AH01114:http:无法连接到后端:本地主机,请参阅: -- 我确实发现使用端口和代理之间有一个有趣的区别。使用端口号,当我输入以下内容时: 这些结果在浏览器窗口中返回: 96:0{“sid”:“XXXX”,“升级”:[“websocket”],“pingInterval”:25000,“pingTimeout”:5000} 但当我使用代理尝试同样的方法时: 我看到可疑的结果,与我使用端口号时非常不同: {“代码”:1,“消息”:“会话ID未知”} 奇怪的是,除了所有的错误消息外,一切似乎都正常工作 我的httpd.conf配置如下:通过apache代理运行socket.io时出现问题,socket.io,Socket.io,最近,我从使用端口号改为使用apache代理,现在出现以下浏览器控制台错误: VM6:1 GET 400(错误请求) VM6:1 POST 400(错误请求) 我的apache日志文件中充满了以下消息: [Mon-Mar 02 18:25:03.199849 2020][proxy:error][pid 28494](111)连接被拒绝:AH00957:HTTP:尝试连接到127.0.0.1:20005(本地主机)失败 [Mon-Mar 02 18:25:03.199892 2020][prox
## 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>
##2020-03-02-尝试获取
##2020-03-02-尝试禁用重用=打开
ProxyPasshttp://localhost:20005/ Keepalive=On重试=5超时=600
ProxyPassReversehttp://localhost:20005/
有人对我下一步的尝试有什么建议吗
非常感谢大家。经过许多时间和努力,我有两个解决方案:
## 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']
}
);
##谢谢你lopezdonaque@https://github.com/socketio/socket.io/issues/1696
重新启动发动机
RewriteCond%{HTTP:Connection}升级[NC]
重写规则/proxyPort3030/(*)ws://localhost:3030/$1[P,L]
ProxyPasshttp://localhost:3030/
##如果没有proxyPassReverse,它似乎可以正常工作??
ProxyPassReversehttp://localhost:3030/
常量套接字=io.connect
(
{'path':window.location.pathname+'socket.io'
,'transports':['websockets','polling']
}
);
这同样有效,但是,我希望WebSocket和轮询都能工作,这个示例只有轮询:
<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']
}
);
命令允许,拒绝
通融
ProxyPass/proxyPort3030/http://localhost:3030/
ProxyPassReverse/proxyPort3030/http://localhost:3030/
代理请求关闭
常量套接字=io.connect
(
{'path':window.location.pathname+'socket.io'
,'transports':['polling']
}
);