【发布时间】: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