首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nginx与代理WebSockets

问nginx与代理WebSockets
EN

Stack Overflow用户
提问于 2013-05-09 19:26:06
回答 1查看 6.7K关注 0票数 16

我试图用nginx代理WebSocket + HTTP流量。

我读过这样的文章:http://nginx.org/en/docs/http/websocket.html

我的配置如下:

代码语言:javascript
复制
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    gzip  on;

    map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
    }

    server {
      listen 80;
      server_name ourapp.com;

      location / {
        proxy_pass http://127.0.0.1:100;
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   Upgrade          $http_upgrade;
        proxy_set_header   Connection       $connection_upgrade;
      }
    }
}

我有两个问题:

1)连接每分钟关闭一次。

2)我希望在同一个端口上同时运行HTTP和WS。应用程序在本地运行良好,但是如果我尝试将HTTP和WS放在同一个端口上并设置这个nginx代理,则得到如下结果:

到'ws://ourapp.com/ws‘的WebSocket连接失败:意外响应代码: 200

加载应用程序(HTTP)似乎很好,但是WebSocket连接失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 11:44:18

问题1:对于每分钟死亡一次的连接,我意识到它是nginx变量。我可以偶尔让我们的应用程序切换到ping,或者增加超时。我不确定是否应该将其设置为0,我决定每分钟只进行一次ping,并将超时设置为90秒。(keepalive_timeout)

问题2:当我使用CloudFlare CDN时,出现了CloudFlare连接性问题。禁用CloudFlare加速解决了这个问题。

或者,我可以创建一个子域,并将其设置为“未加速”,并将其用于WS。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16469581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档