小编Der*_*dan的帖子

Nginx在proxy_pass之后使用Upgrade头

所以我在2天的大部分时间里一直撞到墙上,请帮忙.

我正在尝试使用此django-websocket-redis配置建立Websocket连接 .有两个uwsgi运行实例,一个用于网站,一个用于websocket通信.

我大量使用wireshark来找出究竟发生了什么,显然nginx正在吃标题"Connection:Upgrade"和"Upgrade:websocket".

这是关键的nginx配置部分:

upstream websocket {
    server 127.0.0.1:9868;
}

location /ws/ {
    proxy_pass_request_headers      on;
    access_log off;
    proxy_http_version 1.1;
    proxy_pass http://websocket;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Upgrade websocket;
}
Run Code Online (Sandbox Code Playgroud)

正如您在这两个屏幕截图中看到的那样,内部通信的tcpdump显示握手工作正常.但在我的浏览器(第二张图片)中,标题丢失了.

任何想法都非常感谢.我真的被困在这里:(

版本:

nginx - 1.7.4
uwsgi - 2.0.7
Run Code Online (Sandbox Code Playgroud)

pip freeze:Django == 1.7 MySQL-python == 1.2.5 django-redis-sessions == 0.4.0 django-websocket-redis == 0.4.2 gevent == 1.0.1 greenlet == 0.4.4 redis == 2.10.3六== 1.8.0 uWSGI == 2.0.7 wsgiref == 0.1.2

django nginx websocket uwsgi

7
推荐指数
1
解决办法
1925
查看次数

标签 统计

django ×1

nginx ×1

uwsgi ×1

websocket ×1