nginx反向代理wss websocket出现的问题

参考文章

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.csdn.net/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
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值