17370845950

SocketIO和Web服务能否共用一个端口?

socketio 共用端口

socketio 是否可以与 web 服务共用一个端口?对于此问题,答案是肯定的。

借助反向代理实现共用

使用反向代理是解决此问题的一种简单方法。将 80 端口的 /socket.io/ 开头请求代理到原始的 9092 端口,其他路径的请求则转发到原始 80 端口的程序。

反向代理配置示例

以下是使用 nginx 实施反向代理的示例配置:

http {
  server {
    listen 80;
    root /var/www/html;

    location / {  # 默认后端
      proxy_pass http://localhost:9091;
    }

    location /socket.io/ {  # socketio 后端
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host;

      proxy_pass http://localhost:9092;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
  }
}