吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1050|回复: 3
收起左侧

[求助] nginx 反向代{过}{滤}理websocket不生效

[复制链接]
ppgjx 发表于 2022-11-8 21:33
本帖最后由 ppgjx 于 2022-11-8 21:38 编辑

我现在有个websocket服务器 链接是 ws://localhost:8282
有个域名 www.qq.com

然后我得nginx是这样设置的

[Asm] 纯文本查看 复制代码
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream websocket {
    server localhost:8282; # appserver_ip:ws_port
}

server {
     server_name [url=http://www.qq.com]www.qq.com[/url];
     location / {
         proxy_pass http://websocket;
         proxy_read_timeout 300s;
         proxy_send_timeout 300s;
         
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $connection_upgrade;
     }
}


这样的配置是没问题的 也就是websocket链接地址由ws://localhost:8282改成了 ws://www.qq.com


现在有个问题 只把www.qq.com/websocket这个地址转发过去 我是这样配置的

[Asm] 纯文本查看 复制代码
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream websocket {
server localhost:8282; # appserver_ip:ws_port
}

server {
server_name [url=http://www.qq.com]www.qq.com[/url];
location /websocket/ {
proxy_pass http://websocket;
proxy_read_timeout 300s;
proxy_send_timeout 300s;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}


现在按理来说我使用ws://www.qq.com/websocket 是不是应该等于 ws://localhost:8282/websocket

但是我测试是连不通 ws://www.qq.com 也是连不同有大佬知道是哪里问题吗

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

78054465 发表于 2022-11-8 22:49
location /websocket/  改成这个试一试 location /websocket

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ppgjx + 1 + 1 我很赞同!

查看全部评分

jidesheng6 发表于 2022-11-9 09:27

我这里用一下我笔记中的内容,你这个是属于Nginx中匹配路径的问题:

四、关于Nginx配置反向代理服务器的路径问题
我们在nginx中配置proxy_pass中,需要注意以下几点:

当在后面的url加上了/,相当于是绝对根路径,也就是nginx不会将location中匹配的路径部分代理走
如果没有加/;nginx会把路径部分也代理走
假设我们的代理服务器是192.168.0.1;我们真实服务器是192.168.0.2,我们目网址为http://192.168.0.1/proxy/test.html;我们来探讨以下几种情况

一、location和pass路径都带/

location /proxy/{
        proxy_pass http://192.168.0.2:1000/;
}
BashCopy
此时我们访问192.168.0.1/proxy/test.html的时候,实际上访问的就是http://192.168.0.2:1000/test.html;可以看到,proxy作为匹配,但是不会被带入实际请求路径中

二、location带/但是pass不带

location /proxy/{
        proxy_pass http://192.168.0.2:1000;
}
BashCopy
这个时候,实际上访问的就是http://192.168.0.2/proxy/test.html这个url

总的来说就是:被代理的url后面加了/就表示匹配到location,但是不带location部分,不加/表示要带着location部分一起请求。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
chengxuyuan01 + 1 + 1 我很赞同!

查看全部评分

qPHPMYSQL 发表于 2022-11-9 09:55
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表