Nginx
通過 Apache 向 Socket.IO 應用程序發送請求時出現“錯誤請求”
是)我有的
我有
Socket.IO
來自模板的應用程序const express = require('express'); const app = express(); const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); io.on('connection', (socket) => { console.log('a user connected'); }); server.listen(3000, () => { console.log('listening on *:3000'); });
我配置了
Apache
<VirtualHost *:443> ServerName ws.domain.com ProxyPreserveHost On ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ SSLEngine on SSLCertificateFile /root/origin.pem SSLCertificateKeyFile /root/private.key </VirtualHost>
當我嘗試通過郵遞員發送請求時,
localhost:3000
一切正常但是當我嘗試向我發送請求時,
ws.domain.com
我總是得到400 Bad Request
我試過的
- 我試圖從文件中配置 Apache這對我沒有幫助
- 我嘗試使用
Nginx
並從文件中對其進行了配置,但它也對我沒有幫助- 我試圖在
Flask
withPySocketIO
和 with上重寫伺服器flask-socketio
,並得到同樣的錯誤我已經完全絕望了,不明白問題出在哪裡。
PS如果這很重要,我使用
CentOS 7
. 我通過 代理域,Cloudflare
並且 websockets 當然是連接的PSS 我在伺服器上的所有其他 HTTP 應用程序都可以正常工作(通過 Apache),問題只出在 websockets
結果證明是非常平淡無奇的。事實證明,前端的版本為 2
Socket.IO
,而伺服器上的版本為 4。升級軟體包有助於解決問題