Nginx

通過 Apache 向 Socket.IO 應用程序發送請求時出現“錯誤請求”

  • December 14, 2021

是)我有的

我有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

在此處輸入圖像描述

在此處輸入圖像描述

我試過的

  1. 我試圖從文件中配置 Apache這對我沒有幫助
  2. 我嘗試使用Nginx並從文件中對其進行了配置,但它也對我沒有幫助
  3. 我試圖在FlaskwithPySocketIO和 with上重寫伺服器flask-socketio,並得到同樣的錯誤

我已經完全絕望了,不明白問題出在哪裡。

PS如果這很重要,我使用CentOS 7. 我通過 代理域,Cloudflare並且 websockets 當然是連接的

PSS 我在伺服器上的所有其他 HTTP 應用程序都可以正常工作(通過 Apache),問題只出在 websockets

結果證明是非常平淡無奇的。事實證明,前端的版本為 2 Socket.IO,而伺服器上的版本為 4。升級軟體包有助於解決問題

引用自:https://serverfault.com/questions/1086188