参考文章
https://www.cnblogs.com/Miss-mickey/p/6734831.html
1、下载nginx
下载地址:http://nginx.org/en/download.html (建议下载稳定版的)
下载之后解压到某个文件夹,然后shift+右键——在此处打开控制台,输入start nginx启动服务器
在浏览器输入localhost,如果有出来nginx页面就代表成功了。
具体命令行操作可以参考这篇博客:https://www.cnblogs.com/saysmy/p/6609796.html
2、在本地生成免费的ssl证书。(如果自己公司或者自己网站有认证证书可以跳过此步)
免费SSL生成工具:http://slproweb.com/products/Win32OpenSSL.html
进去了之后下载最新的安装包安装即可,当前最新版本是 Win64 OpenSSL v1.1.0i
如果网站挂了也可以从国内的资源站下载:https://oomake.com/download/openssl
然后参考这篇博客生成属于自己的ssl证书:https://blog.youkuaiyun.com/kwy15732621629/article/details/76602241
3、找到nginx配置文件
打开Nginx安装目录,找到 conf/nginx.conf 配置文件。
这个配置文件每一行代表什么意思可以参考这篇博客 https://www.cnblogs.com/Miss-mickey/p/6734831.html
这篇博客也讲了http的反向代理,有空可以试试,没空就不用细看了。
注意,“#” 开头的一行表示配置文件的注释,不要写着写着写混了写到被注释掉的配置信息里了。
4、修改配置文件,进行websocket反向代理
# 实际websocket服务器地址
upstream wss_svr {
server 192.168.213.182:3653 weight=1;
}
# 443 ssl端口配置,实际websockets(wss)地址
server {
listen 443;
server_name 192.168.213.182;
ssl on;
# 自己的证书,放在与nginx.conf同一文件夹下。(若放不同文件夹注意路径问题)
ssl_certificate dhxtest.crt;
ssl_certificate_key dhxtest_nopass.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;
}
}
6、可能报错
报错1:chrome浏览器提示 WebSocket connection to ‘wss://192.168.213.182/’ failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT ,代表根本没连接上你原来的服务器。检查一下端口是否都写对了,配置是否按上面的流程走下来了
报错2:chrome浏览器提示 NET::ERR_CERT_COMMON_NAME_INVALID ,这个是由于你的chrome浏览器识别出目标443地址的证书是自己颁发的,给你禁止了。解决办法:直接输https://你的域名,点高级-继续前往你的域名。后续即可成功连接了。此问题解决办法不完全好用,需要具体问题具体分析。
测试wss websocket
这里配置访问wss:/test.com/webSocket访问websocket,实际会请求到ws:/58.159.142.12:8081。
在线测试网站websocket
websocket