【问题标题】:configuring nginx as proxy for websocket将 nginx 配置为 websocket 的代理
【发布时间】:2014-07-06 14:47:35
【问题描述】:

我有一个带有 websocket 的应用程序,它位于:

http://localhost:8888/something/ws

我想使用 nginx 作为代理,但是连接的转发不起作用。这是我的配置文件:

upstream backend {
    server 127.0.0.1:8888;
}

server {
    listen 80;

    server_name localhost;

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://backend;
        proxy_next_upstream error;
    }

    location /something/ws {

        proxy_pass http://backend;

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

有什么问题。我必须重写路径还是其他什么?


更新

Ubuntu 12.04。附带 nginx 1.1。在将 nginx 升级到 1.6 之前,我也必须删除 nginx-common 和 nginx-full,否则会重新安装 nginx 1.1 ...

【问题讨论】:

标签: nginx proxy websocket


【解决方案1】:

你可以试试下面的:

  location /something/ws/ {
            proxy_pass http://backend;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

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

            # Path rewriting
            rewrite /something/ws/(.*) /$1 break;
            proxy_redirect off;
        }

关键是路径重写。

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 2017-05-05
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多