记录nginx wss 代理转发

var uniqueClientID = getUniqueID();

if ('WebSocket' in window) {
    websocket = new WebSocket("wss://aaa.com:8008/websocket/" + uniqueClientID + "");

} else {
    console.log("您的浏览器不支持对话连接");
}

websocket.onopen = function () {
    console.log("连接成功");
}

websocket.onclose = function () {
    console.log("退出连接");
}

websocket.onmessage = function (event) {
    console.log("收到消息" + event.data);
}

websocket.onerror = function () {
    console.log("连接出错");
}

nginx转发之前 WebSocket的链接是ws://aaa.com:8008/websocket/a, a是一个变量
转发后的链接是wss://aaa.com:8008/websocket/a

我的nginx配置

server {
        listen       8008 ssl;
        server_name  aaa.com;

        ssl_certificate      ssl/4952229_aaa.com.pem;
        ssl_certificate_key  ssl/4952229_aaa.com.key;

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

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

        location / {
            root   html;
        }

        location ~ ^/websocket/(.+)$ {
		   proxy_pass http://aaa.com:8006/websocket/$1;
		   proxy_redirect off;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           # For WebSocket upgrade header proxy_http_version 1.1;
           #告诉nginx使用HTTP/1.1通信协议,这是websoket必须要使用的协议
           proxy_set_header Upgrade $http_upgrade;
           #告诉nginx,当它想要使用WebSocket时,响应http升级请求
           proxy_set_header Connection "upgrade";
           client_max_body_size 10m;
           client_body_buffer_size 512k;
           proxy_connect_timeout 300;
           proxy_send_timeout 300;
           proxy_read_timeout 300;
           add_header Access-Control-Allow-Origin '*';
        }
    }

**

像我这样将变量作为反向代理的地址最重要的一点

**
将变量作为反向代理的地址的话会在Nginx0.6.18以后的版本中都会提示“ no resolver defined to resolve ”的类似错误,而在proxy_pass 中直接设置地址却不会。,原因是Nginx0.6.18以后的版本中启用了一个resolver指令,在使用变量来构造某个server地址的时候一定要用resolver指令来制定DNS服务器的地址,所以解决这个问题的方法很简单:在nginx的配置文件中的http{}部分添加一行resolver 8.8.8.8;即可

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Nginx上实现WebSocket Secure(wss)的正向代理,你可以使用Nginx的http模块来实现。通过在Nginx的配置文件中添加一些配置,你可以将来自客户端的HTTPS请求转发到WebSocket服务器。以下是一个示例配置: ``` server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { proxy_pass http://websocket-server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 1800s; proxy_send_timeout 1800s; proxy_read_timeout 1800s; } } ``` 在上面的配置中,你需要将`example.com`替换为你的域名,并将证书和私钥的路径替换为实际的路径。`websocket-server`是你要代理的WebSocket服务器的地址。 此配置会将来自客户端的wss请求转发到指定的WebSocket服务器,并在必要时升级连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [实现Nginx代理WSS协议](https://blog.csdn.net/maomao1983zy/article/details/120494162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [《Linux运维实战:Nginx方向代理wssws》](https://blog.csdn.net/m0_37814112/article/details/123737847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值