nginx反代理websocket的配置

服务器 ayflying 1767℃ 评论

直接上配置,如果ngixn是配置的80端口,就直接通过 ws://blog.7cuu.com/ws:12345 访问到 ws://blog.7cuu.com:80 这个websocket这个协议上


location ~ \ws{            #通过/ws目录访问,如果直接访问改成/
        proxy_pass http://blog.7cuu.com:12345;                        #填写需要代理到的目标地址和端口
        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_set_header REMOTE-HOST $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }


下面介绍各参数的意思


proxy_set_header Host $host;

表示代理的域名,$host表示为连接域名  比如通过 ws://blog.7cuu.com:12345 访问,系统会解析域名为blog.7cuu.com

这里也可以固定一个域名,让目标不管怎么访问都是固定的填写的默认域名


proxy_set_header X-Real-IP $remote_addr;

这是个很重要的参数,为了让被代理端获取用户的真实ip。

这是是一个自定义头。X-Real-Ip 通常被 HTTP 代理用来表示与它产生 TCP 连接的设备 IP,这个设备可能是其他代理,也可能是真正的请求端。需要注意的是,X-Real-Ip 目前并不属于任何标准,代理和 Web 应用之间可以约定用任何自定义头来传递这个信息


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

主要是用来标记用户标识的,会有多层cdn的标记放在上面

X-Forwarded-For 是一个扩展头。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中.


proxy_set_header REMOTE-HOST $remote_addr;

这个参数和X-Real-Ip是一样的,作用也几乎相同,可以忽略不要


proxy_http_version 1.1;

标识代理的http版本号


proxy_set_header Upgrade $http_upgrade;

标记为该代理为websocket,官方例子是这么写的


proxy_set_header Connection "Upgrade";

同上

转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » nginx反代理websocket的配置

高效,专业,悠悠博客

联系我们