我有一个运行在端口9000上的and服务器,我想让它在端口80上可用,我还想在端口9021上提供一个websocket连接。如果我在http上运行这段代码,一切都正常。但是当我转到https时,websocket无法连接。
这是我的nginx配置:这给出了警告:
nginx: [warn] conflicting server name "oyun.net" on 0.0.0.0:443, ignored
server {
listen 443 ssl;
server_name oyun.net;
ssl_certificate /etc/key.pem
ssl_certificate_key /etc/key2.pem
listen 80;
location / {
proxy_pass http://localhost:9000
}
}
server {
listen 443 ssl;
server_name oyun.net;
ssl_certificate /etc/key.pem
ssl_certificate_key /etc/key2.pem
listen 9021;
location / {
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header upgrade $http_upgrade;
proxy_set_header connection "upgrade";
proxy_set_header x-real-ip $remote_addr;
proxy_set_header host $host;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
}
}以下是浏览器错误:
WebSocket connection to 'wss://oyun.net:9021/socket/v1?sri=tcylqwzjnl' failed:
Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR发布于 2019-04-17 03:20:51
我已经为socket.oyun.net创建了一个新的证书,此配置有助于
server {
listen 80;
server_name oyun.net;
return 301 https://oyun.net$request_uri;
}
server {
listen 443 ssl;
server_name oyun.net;
ssl_certificate /etc/letsencrypt/live/oyun.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/oyun.net/privkey.pem;
location / {
proxy_pass http://localhost:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 9021 ssl;
server_name socket.oyun.net;
ssl_certificate /etc/letsencrypt/live/socket.oyun.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/socket.oyun.net/privkey.pem;
location / {
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}https://stackoverflow.com/questions/55698808
复制相似问题