nginx代理wss和https

本文详细介绍如何在Nginx中配置SSL证书,包括生成私钥、创建CSR、签署证书等步骤,并提供针对WebSockets的支持配置。适用于希望实现HTTPS加密通信及WSS的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx启用ssl

yum install openssl openssl-devel -y

./configure --prefix=/usr/local/nginx --with-http_ssl_module


img]http://dl2.iteye.com/upload/attachment/0128/9904/e0b62951-a384-3178-a74c-2fcc341c2974.png[/img]

证书生成参考
[url]http://blog.youkuaiyun.com/weixin_35884835/article/details/52588157[/url]
# 1、首先,进入你想创建证书和私钥的目录,例如:
cd /etc/nginx/

# 2、创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024

# 3、创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr

# 4、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key


# 5、最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt


nginx配置:

upstream mybackend {
server 192.168.62.128:3000;
}
server {
listen 443 ssl;
#server_name localhost;
server_name bellard.org;

ssl_certificate /opt/meituan/qemu/deobfuscated/ssl/server.crt;
ssl_certificate_key /opt/meituan/qemu/deobfuscated/ssl/server.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
# root html;
root /opt/meituan/qemu;
index index.html index.htm;
}
location /tap {
# switch off logging
access_log off;

# redirect all HTTP traffic to localhost:8080
#proxy_pass http://192.168.62.128:3000;
#proxy_pass http://bellard.org:3000;
proxy_pass http://mybackend;
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 support (nginx 1.4)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

参考
[url]http://blog.youkuaiyun.com/chopin407/article/details/52937645[/url]
[url]https://github.com/nicokaiser/nginx-websocket-proxy/blob/df67cd92f71bfcb513b343beaa89cb33ab09fb05/simple-wss.conf[/url]
[url]https://stackoverflow.com/questions/12102110/nginx-to-reverse-proxy-websockets-and-enable-ssl-wss[/url]
network-websockets.js
改成
tuntapWS_connection = new WebSocket('wss://192.168.62.128/tap', []);


tuntapWS_connection = new WebSocket('wss://bellard.org/tap', []);


/etc/hosts
192.168.62.128 bellard.org
把jslinux从http切换成https,顺带ws换成wss


注意,如果是域名访问的,就把ip都写成域名,否则可能认证错误
Nginx是一个功能强大的反向代理服务器,常用于负载均衡、缓存加速等场景。当需要将WebSocket (WSS) 协议的流量(加密WebSockets,通过HTTPS传输)代理到后端服务器时,Nginx可以作为一个适配器来处理。 在配置Nginx代理WSS服务时,你需要以下几个步骤: 1. **启用SSL/TLS**:在Nginx中启用SSL支持,这通常涉及到生成或提供自签名的SSL证书,以及配置HTTPS监听端口(默认8443)。 ```nginx server { listen 443 ssl; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/key.pem; } ``` 2. **配置WSS上游服务器**:定义一个 upstream 模块,列出实际提供WebSocket服务的后端服务器列表,如应用服务器IP端口号。 ```nginx upstream wss_backend { server backend_server_1:8080; server backend_server_2:8080 weight=2; # 可以设置权重 } ``` 3. **创建WebSocket路由**:使用`proxy_pass`指令将WSS请求转发到上游服务器,并指定HTTPS连接。 ```nginx location /ws/ { proxy_pass https://$host/wss-backend/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` 4. **启动Nginx并测试**:保存配置文件,然后重启Nginx使其加载新的配置。 **相关问题--:** 1. Nginx如何验证客户端的身份? 2. 如何在Nginx中处理WSS的断线重连? 3. 如果有多个域名同时使用Nginx代理WSS,如何统一管理证书?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值