首页 > 解决方案 > Socket.io 不能与 nginx 反向代理一起使用?

问题描述

我正在尝试使用socket.io我的nginx反向代理服务器,但它似乎不起作用..

Chrome 展示了这个美妙的瀑布:

截屏:

在此处输入图像描述

服务器的响应总是这样的:
96:0{"sid":"UU9d1DfZL5RD29kAAACq","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}2:40

nginx.conf:

server {
  listen 443 ssl;

  server_name socket.my.domain;

  ssl_certificate  /etc/letsencrypt/live/socket.my.domain/fullchain.pem;
  ssl_certificate_key  /etc/letsencrypt/live/socket.my.domain/privkey.pem;

  location / {
    proxy_pass http://127.0.0.1:1027/;
    chunked_transfer_encoding off;
    proxy_buffering   off;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;  # This line.
    proxy_set_header Host $host;
    proxy_http_version 1.1;
  }

  location /socket.io/ {
    proxy_pass http://127.0.0.1:1027/socket.io/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_redirect off;

    proxy_buffers 8 32k;
    proxy_buffer_size 64k;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
  }
}

socket.io 服务器:

const io = require("socket.io")(1027);

io.on("connection", (socket) => {
  console.log('connected');
});

前端javascript:

let socket = io("https://socket.my.domain");

socket.on("connect", () => {
  console.log(socket.id);
});

服务器不断记录消息“已连接”,但客户端不记录该消息。
我的代码有什么问题?

标签: javascriptnode.jsnginxsocket.io

解决方案


推荐阅读