nginx 配置支持websocket转发

这篇具有很好参考价值的文章主要介绍了nginx 配置支持websocket转发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式1.动态判断是否需要升级websocket协议

编辑nginx.conf,在http区域内一定要添加下面配置:

http {

    #自定义变量 $connection_upgrade

    map $http_upgrade $connection_upgrade {

        default          keep-alive;  #默认为keep-alive 可以支持 一般http请求

        'websocket'      upgrade;     #如果为websocket 则为 upgrade 可升级的。

    }

}

map指令的作用:

该作用主要是根据客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade的值,即根据变量$http_upgrade的值创建新的变量$connection_upgrade,

创建的规则就是{}里面的东西。如果 $http_upgrade为websocket的话,那么$connection_upgrade的值为upgrade支持升级协议。否则为keep-alive

server {
   server_name test.server;
   listen 8083;
   listen [::]:8083;
 

   location / { //默认匹配

            proxy_pass http://$httpUpstreamName_8083;

            #Nginx代理webSocket经常中断(超时)的解决方法

            proxy_connect_timeout 4s;                

            proxy_read_timeout 60s;                  #如果没效,可以考虑这个时间配置长一点

            proxy_send_timeout 12s;                

            #升级http1.1到 websocket协议

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection  $connection_upgrade;

    }

}

测试ws连接转发是否正常:ws://test.server:8083/

方式2.直接写死升级websocket

server {
   server_name test.server;

   listen 80;
   listen [::]:80;
   listen 8083;
   listen [::]:8083;
   listen 8088;
   listen [::]:8088;

    location / { #只能通过$serviceName配置 $httpUpstreamName_xxx可能不存在

        if ($server_port = "80") { #sys default require

            proxy_pass http://$serviceName:80;

        }

        if ($server_port = "8080") { #sys default require

            proxy_pass http://$serviceName:8080;

        }

        if ($server_port = "8088") { #custom

            proxy_pass http://$serviceName:8088;

        }

        proxy_pass http://$serviceName:8083;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

    }

}

测试ws连接转发是否正常:ws://test.server:8083/

拓展阅读:

在nginx中,每个server块应该具有唯一的server_name来避免冲突,不同server块中server_name不允许重复。

set命令用于设置变量,set $XX=XX,在server块中set设置的变量,仅当前server块中有效。

在 HTTP 协议中,keep-alive、upgrade 和 close 是三种不同的连接管理方式。它们之间的区别如下:

keep-alive: 这是 HTTP 的默认连接管理方式。当使用 keep-alive 时,允许多个请求和响应重复使用相同的 TCP 连接。这样可以减少建立和关闭连接的开销,提高性能。同一连接上的多个请求将被连续发送和接收,直到达到连接的最大空闲时间或收到显式的关闭连接指令。

upgrade: 这是一种特殊的连接升级方式,通常用于支持协议升级,例如从 HTTP 到 WebSocket。当客户端发送一个带有 “Upgrade” 头部的请求时,服务器可以将连接升级到另一个具有自定义功能的协议。在升级的过程中,服务器和客户端之间通常会协商协议的切换和其他必要的握手。

close: 当服务器或客户端希望终止连接时,可以发送一个带有 “Connection: close” 头部的请求或响应。这会指示对方关闭连接。在这种情况下,无论之前是否启用了 keep-alive,连接都会被关闭,无法复用。文章来源地址https://www.toymoban.com/news/detail-736616.html

到了这里,关于nginx 配置支持websocket转发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx配置websocket或https的转发教程

    1、把普通的IP访问改为自己的域名,例如我们希望的域名是mywebsocket.test.com,那么前端页面配置的地址如下 2、页面的DEMO如下,比较简单 3、nginx的配置如下 4、nginx命令,每次nginx.conf修改后,需要重新reload

    2024年02月11日
    浏览(48)
  • nginx配置websocket支持(官方版)

    程序中如果用到websocket实现后台与前台的及时通讯功能,如果后台用nginx进行反向代理, 那么就需要在nginx配置对websocket的支持。 否则前端就会报websocket超时的错误。 经常我们解决这种问题的思路是到网上搜索大家解决问题的方法。但是人云易云,我感觉最好的方式还是看看

    2024年02月03日
    浏览(35)
  • Nginx代理nginx.conf配置——反向代理(对WebSocket支持)

    基于Nginx代理nginx.conf配置——反向代理,如果要添加websocket支持,需要进行如下配置 在http中添加一下配置,添加对websocket支持 配置后重新运行nginx后,websocket即可成功代理。 注意防火墙端口是否开放、nginx如果使用docker,其对应的端口是否映射出来。

    2024年02月13日
    浏览(39)
  • windows下采用 nginx配置websocket支持wss流程

    第一步、安装OpenSSL (1)下载OpenSSL软件包 地址:https://slproweb.com/products/Win32OpenSSL.html OpenSSL版本说明: Win64 OpenSSL v1.1.1wLight,安装Win64 OpenSSL v1.1.1w最常用的软件包 Win64 OpenSSL v1.1.1w,安装Win64 OpenSSL v1.1.1w完整软件包 Win32 OpenSSL v1.1.1w Light,安装Win32 OpenSSL v1.1.1w最常用的软件包

    2024年02月22日
    浏览(46)
  • flask实际开发:flask和nginx如何配置支持websocket

    1、点击Edit Confiturations 2、配置启动方式 1 新增启动配置 2 选择使用python命令执行 3 给配置设置一个名字 4 设置要启动的模块的位置,flask基本都是app.py 模块 最后别忘记:点击右侧的apply 依赖包: pip install gevent-websocket==0.10.1 pip install gevent==21.1.2 pip install flask==1.1.2 1、配置方式

    2024年02月09日
    浏览(37)
  • Nginx服务、Vite项目如何设置ws(websocket)代理?

    最近干活中遇到请求访问地址代理的问题,http请求代理到是没啥问题,主要是WebSocket代理配置,今天折腾了一上午加下午一小时,才将其配置好,主要是部署服务器的时候nginx这一块不太清楚,作为一个初级前端,确实还有待提高。本文主要细致的讲解一下ws代理如何设置,

    2024年01月25日
    浏览(44)
  • nginx请求转发webSocket

    原由 1.我有一个socket服务,用ip访问是成功的,但是老板说用这个不行,要用nginx请求转发,转发内网地址到某个域名 2.但是我改成了指定域名后失败, 因为我没有配置 nginx.conf  http的很简单 ,如下(--- 可跳过 ---) server {     listen 80;     server_name *.mynetwork.cn mynetwork.cn;     

    2024年02月01日
    浏览(39)
  • 【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务

    这篇文章,主要介绍如何通过Nginx服务器转发客户端的WebSocket接口到后端服务【知识星球】。 目录 一、Nginx配置WebSocket 1.1、Nginx配置内容 1.2、客户端请求地址 1.3、创建WebSocket测试工程 1.4、启动测试 1.5、WebSocket超时问题 1.5.1、设置超时时间 1.5.2、建立心跳机制(推荐) 今天

    2024年04月11日
    浏览(48)
  • Nginx配置WS代理

    本文背景如下: Vue+SpringBoot 前后端分离,vue采用Nginx作为服务,涉及内外网使用的场景。 技术使用:Stomp 和 rabbitMQ Nginx增加如下配置: VUE前端配置(注意https和http的区别):

    2024年02月11日
    浏览(46)
  • Linux下nginx添加stream模块支持Tcp转发

    方式1 yum直接安装 安装nginx 安装模块 添加转发配置 /etc/nginx/nginx.conf底部添加 运行测试 方式2 源码编译 一、安装编译工具 二、安装PCRE PCRE (Perl Compatible Regular Expressions) 是一个用于处理正则表达式的库,它是一个C语言的库,可以在多种编程语言中使用。PCRE库提供了一套API来编

    2024年04月28日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包