【配置】使用nginx反向代理加密websocket (wss)

来源:互联网 发布:c语言将大写转换为小写 编辑:程序博客网 时间:2024/06/03 10:04

对于普通的websocket(非加密)服务器端直接处理就可以,可以用Go或者Nodejs等等做服务端。对于加密的,那么服务端需要配置证书。

那么如果你想省掉服务端的改动,其实也可以在代理层做一些工作,让nginx来处理SSL部分,然后通过upstream使用普通的ws协议即可。

这样的好处就是可以让服务端更轻松,还有一点就是可以利用nginx的负载均衡来分配多个后端服务实体。

具体配置方法:

在nginx配置文件里面新增server配置:

upstream wss_svr {
server 127.0.0.1:9999 weight=1;  #这里可以是多个服务端IP(分多行),设置权重就可以实现负载均衡了
}

server {
listen 443;
server_name test.xxxx.com;

access_log logs/test.xxxx.log main;

ssl on;
ssl_certificate /etc/test.xxxx.com.cer;  # 这里是服务端的证书路径
ssl_certificate_key /etc/test.xxxx.com.key; # 这里是秘钥路径
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
ssl_verify_client off;

location / {
proxy_redirect off;
proxy_pass http://wss_svr;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}

}

把证书和秘钥放置好之后,就可以用 nginx -s reload来重新加载配置文件,一切准备就绪。

测试,按照你预先设定好的服务端请求地址new websocket连接即可。例如  wss://test.xxxx.com/

原创粉丝点击