簡體   English   中英

Nginx SSL 反向代理不適用於 websocket

[英]Nginx SSL reverse proxy doesn't work with websocket

我有這個配置:

server {
listen 443 ssl;
listen [::]:443 ssl;

server_name mydomain.com;

ssl_certificate /usr/syno/etc/certificate/ReverseProxy/baac8259-962a-4d45-a265-bf747f5f007d/fullchain.pem;

ssl_certificate_key /usr/syno/etc/certificate/ReverseProxy/baac8259-962a-4d45-a265-bf747f5f007d/privkey.pem;

location / {

    proxy_connect_timeout 60;

    proxy_read_timeout 60;

    proxy_send_timeout 60;

    proxy_intercept_errors off;

    proxy_http_version 1.1;

    proxy_set_header        X-Forwarded-Proto            \"http\";

    proxy_set_header        X-ProxyScheme            \"http\";

    proxy_set_header        Upgrade            $http_upgrade;

    proxy_set_header        Connection            $connection_upgrade;

    proxy_set_header        Host            $http_host;

    proxy_set_header        X-Real-IP            $remote_addr;

    proxy_set_header        X-Forwarded-For            $proxy_add_x_forwarded_for;

    proxy_pass http://192.168.1.4:8090;

   }
}

我想只在前端應用 SSL 並在后端使用基本的 http。

此配置應該有效,但 websocket 網站無法打開,顯示此錯誤:

WebSocket connection to 'wss://mydomain.com:80/' failed: Error in connection establishment: 
net::ERR_SSL_PROTOCOL_ERROR

在 web 應用程序的 javascript 文件中挖掘,我看到了這個:

window.websocket = (document.location.protocol == "https:") ? new WebSocket('wss://'+document.location.hostname+":"+window.jsonPort) : new WebSocket('ws://'+document.location.hostname+":"+window.jsonPort);

問題是我真的不明白為什么應用程序會將該方案檢測為 https? 由於我明確嘗試使其顯示為 http。

此問題特定於我轉發到的應用程序。 我現在已經確定並糾正了該應用程序中的問題,因此問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM