首页 > 解决方案 > 使用 NGINX 代理的 Websockets SSL/TLS 终止

问题描述

我的 websocket 使用 ws 在 kubernetes 集群中的节点服务上侦听端口 80。

我正在尝试使用 nginx 反向代理来自 wss/https 的所有请求,以转发到在 80(ws) 上监听的后端 websocket。Nginx 能够转发 ws 请求而 wss 失败。这是我使用的配置。让我知道如何在 nginx 中启用 wss 代理转发。

server {

        listen 443 ssl;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log debug;

        ssl_certificate "/etc/nginx/certs/domain.crt";
        ssl_certificate_key "/etc/nginx/certs/domain.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        resolver 127.0.0.1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_trusted_certificate /etc/nginx/certs/domain.ca-bundle;

        server_name *****;

        location ~ ^/(node|socket\.io) {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_pass http://<service-ip>:80;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
}

标签: nginxwebsocketnginx-reverse-proxywss

解决方案


推荐阅读