node.js - 使用 django 和 nodejs 为 websocket 设置 nginx 的配置(wss ://)

标签 node.js django nginx websocket

我有以下配置来设置 django 应用程序以通过 nginx 上的 uwsgi 提供服务

upstream node{
    server 127.0.0.1:8081  max_fails=1 fail_timeout=20s;

}
server {
    listen 8000 default_server ssl;
    server_name bla.bla;

    ssl_certificate path;
    ssl_certificate_key path;

    location /serve {
        proxy_pass http://node;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass 1;
        proxy_no_cache 1;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_connect_timeout 2s;
    }
    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:///var/uwsgi/sel.sock;
    }
}

我有一个 nodejs 服务器和一个在端口 8081 上运行的 websocket 服务器

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({ port: 8081, path: "/serve" });

现在,当我使用

在我的 html 页面上访问 websocket 服务器时
var websocket = new WebSocket("wss://host:8081/serve"); // works
var websocket = new WebSocket("wss://host:8000/serve"); // doesn't work get 504 error

我做错了什么?任何人都可以指出我的错误并显示正确配置它的指针。

编辑:我的 nginx 版本是 nginx 版本:nginx/1.4.6 (Ubuntu)

最佳答案

wss 假定使用 TLS 的加密 WebSocket 连接。如果 wss://host:8081 有效,那么您的 node.js 会监听加密连接。但是您已经为 TLS 终止和代理未加密数据配置了 nginx。

关于node.js - 使用 django 和 nodejs 为 websocket 设置 nginx 的配置(wss ://),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921513/

相关文章:

database - node.js 传递变量

python - Django - 序列化 parent 协会

django - 试图通过两个词典,但只有第一个有效

nginx - nginx 中的 fastcgi_index 是干什么用的?

node.js - 用户的Nodejs CSV数据导出系统

javascript - 我想要一个简单的示例,如何发送我作为套接字获得的坐标

javascript - 检测 ES 模块是否从 Node 中的命令行运行

python - celery 导入错误 : No module named proj

linux - Kubernetes 上的 Nginx (99 : Cannot assign requested address)

docker - nginx无法将请求转发到在其他容器中运行的服务