【问题标题】:SSL Proxy via NGINX for Websockets cannot establish a connection通过 NGINX for Websockets 的 SSL 代理无法建立连接
【发布时间】:2021-11-01 14:27:49
【问题描述】:

我在一个以 NGINX 作为代理的 Linux 服务器上托管一个游戏服务器(Websocket-sharp + Unity Headless)。

NGINX 配置

server {
    
    server_name game.okdev.se; # managed by Certbot

    location / {
        proxy_http_version 1.1;
        proxy_pass         http://localhost:5009;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header HOST $host;
        proxy_set_header X_Forwarded_For $remote_addr;
        proxy_redirect default;
        client_max_body_size 1000m; 
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/game.okdev.se/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/game.okdev.se/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

服务器 C# 代码 我没有在 C# 中使用 SSL,而是 SSL 部分应该由 NGINX 处理,这个确切的设置适用于以前 使用 NodeJS 和 Websockets 的项目。我的 Websocket 服务器的唯一路径是 /

wssv = new WebSocketServer(port);
wssv.AddWebSocketService("/", () => new SocketInstance(this));

Unity 客户端 C# 代码 通过 NGINX 和 SSL 连接根本不起作用。

ws = new WebSocket("wss://game.okdev.se/");

使用 Unity 客户端连接到直接(端口转发)端口,无需 SSL 并绕过 NGINX 工作。

ws = new WebSocket("ws://game.okdev.se:5009/");

【问题讨论】:

    标签: c# unity3d nginx websocket


    【解决方案1】:

    你不见了 proxy_http_version 1.1;

    【讨论】:

    • 这并没有解决问题。我之前在配置中有它,但在测试时不小心将其删除。我会将其保留在配置中。
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多