nginx - 使用 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";
}
}
解决方案
推荐阅读
- flutter - 在 Flutter 中,为什么我们需要在 StatefulWidgets() 中使用 createState()?
- python - 在 Django 中导入 Sentry_sdk 失败
- mongodb - 如何使用 $where 查询 AWS DocumentDB (DocDB) 以比较两个字段
- opencv4android - 如何使用opencv在android中截屏?
- django - 如何将类添加到自动生成的表单标签标签?
- javascript - 如何使用 chrome devtools 之类的 node-fetch 访问请求/响应 cookie?
- reactjs - 使用反应挂钩保持状态的问题
- python - Python数字密码列表创建者
- r - R中从24小时到12小时的时间条件格式
- javascript - 多维数组声明