nginx websocket 代理

websocket在线测试:http://www.blue-zero.com/WebSocket/,可以使用这个工具测试:

需求:大数据项目开开放2个端口8080和7398,一个走http协议,一个走tcp,也就是访问socket。当client访问这个项目socket会把client的信息抛出到web页面。现在要用nginx做代理,把这2个端口映射到内网,提供内网访问。

nginx代理http协议当然很好解决,

server {

listen 80;

server_name  z.exam.com;

access_log  /var/log/nginx/rdp.elenet.me_access.log main;

error_log /var/log/nginx/rdp.elenet.me_error.log;

location / {

proxy_http_version 1.1;

proxy_set_header Connection "";

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_next_upstream http_502 http_504 http_404 http_503 error timeout invalid_header;

proxy_pass http://11.1.250.241:8080;

}

error_page 404 /404.html;

location = /40x.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

tcp端口的代理用nginx,上面这段肯定是不行的。nginx官网参考文档:http://nginx.org/en/docs/http/websocket.html

其实只需要在nginx的http块和server分别加几行就可以了:

http块加以下几行:

map $http_upgrade $connection_upgrade {

default upgrade;

‘‘ close;

}

server块加以下2行:

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

配置如下,http块文件较大,就不展示了:

server {

listen 7398;

server_name  z.exam.com;

access_log  /var/log/nginx/rdp.elenet.me_access.log main;

error_log /var/log/nginx/rdp.elenet.me_error.log;

location / {

proxy_http_version 1.1;

proxy_set_header Connection "";

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_next_upstream http_502 http_504 http_404 http_503 error timeout invalid_header;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_pass http://11.1.250.241:7398;

}

error_page 404 /404.html;

location = /40x.html {

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

}

以上配置可以贴在同一个conf配置文件中。

时间: 2024-11-07 12:20:44

nginx websocket 代理的相关文章

nginx websocket代理配置

map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream linecloudwebsocket { server 127.0.0.1:9002; } server{ listen 80; server_name localhost; location /linecloud/socket { rewrite ^/linecloud/socket(.*)$ /$1 break; proxy_pass h

Nginx反向代理websocket配置实例

最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本,因此我这边是下载的 Tengine 的最新版本测试的 1.下载 tengine 最近的源码 复制代码 代码如下: wget http://tengine.taobao.org/dow

【Linux】采用nginx反向代理让websocket 支持 wss

背景:玩swoole 服务 使用Nginx反向代理解决wss问题. 即客户端通过wss协议连接 Nginx 然后 Nginx 通过ws协议和server通讯. 也就是说Nginx负责通讯加解密,Nginx到server是明文的,swoole 服务不用开启ssl,而且还能隐藏服务器端口和负载均衡(何乐不为). server { # 下面这个部分和你https的配置没有什么区别,如果你是 宝塔 或者是 oneinstack 这里用生成的也是没有任何问题的 listen 443; server_nam

nginx websocket配置

一·什么是websocket WebSocket协议相比较于HTTP协议成功握手后可以多次进行通讯,直到连接被关闭.但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket.这使得WebSocket程序可以更容易的使用现已存在的基础设施. WebSocket工作在HTTP的80和443端口并使用前缀ws://或者wss://进行协议标注,在建立连接时使用HTTP/1.1的101状态码进行协议切换,当前标准不支持两个客户端

websocket + 代理请求失败,返回400

场景 业务服务提供了 websocket 服务,基于 websocket 来实现报表数据的推送,客户在浏览器上查看报表,经过 http 代理将请求传递给后端服务. 问题 客户在浏览器上查看报表数据时,报表功能异常,浏览器开发工具查看到 websocket 握手在服务端拒绝掉,返回 400 bad request. 分析 400 一般是由于客户端,所以应该是客户端请求参数或者路出现问题.通过对比正常和异常的websocket 请求报文,得到,异常的报文缺少了 Upgrade:websocket 的

详解nginx websocket配置

一·什么是websocket WebSocket协议相比较于HTTP协议成功握手后可以多次进行通讯,直到连接被关闭.但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket.这使得WebSocket程序可以更容易的使用现已存在的基础设施. WebSocket工作在HTTP的80和443端口并使用前缀ws://或者wss://进行协议标注,在建立连接时使用HTTP/1.1的101状态码进行协议切换,当前标准不支持两个客户端

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再

nginx反向代理

1. 操作系统 CentOS 6.4 x86_64 2.软件版本 Nginx 1.4.2 3.实验拓扑 注,实验拓扑见下文. 4.安装yum源 1 2 3 [root @nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh http://download.fedoraproject.org/

Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第三部分

Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 三.Nginx动静分离及负载均衡 3.1 Nginx安装 请参考:https://fengchenglangzi.000webhostapp.com/?p=511 亦