首页 > 系统相关 >nginx配置转发socket请求

nginx配置转发socket请求

时间:2024-12-21 23:44:08浏览次数:9  
标签:upgrade http socket header nginx connection set proxy 转发

http {
    map $http_upgrade $connection_upgrade {
            default upgrade;
            ''      close;
    }

    server {
    ......
        location /ws {
            proxy_pass http://172.16.20.95:8081;
            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            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 X-Forwarded-Proto $scheme;

            proxy_read_timeout 600s;
        }
    ......
    }
}
注释版配置,点击查看代码
http {
    # 要使用 $connection_upgrade 变量,必须首先使用 map 指令来定义它,
    map $http_upgrade $connection_upgrade {
            default upgrade;
            ''      close;
    }

    server {
    ......
        location /ws {
            # 代理到 WebSocket 服务器
            proxy_pass http://172.16.20.95:8081;
            # WebSocket 需要 HTTP/1.1
            proxy_http_version 1.1;

            # 设置 Upgrade 头部
            proxy_set_header Upgrade $http_upgrade;
            # 设置 Connection 头部
            proxy_set_header Connection $connection_upgrade;
            # 通常建议设置 Host 头部
            proxy_set_header Host $host;
            # 发送真实 IP
            proxy_set_header X-Real-IP $remote_addr;
            # 发送 X-Forwarded-For
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 发送协议,如 http 或 https
            proxy_set_header X-Forwarded-Proto $scheme;

            # 不设置超时,或者设置一个较 高的超时时间
            proxy_read_timeout 600s;
        }
    ......
    }
}

/ws 开头的路径,是 WebSocket 通信的常见前缀。
http块未配置map支持,nginx启动报错"unknown 'connection\_upgrade' variable"

解释

  • map $http_upgrade $connection_upgrade:这条指令创建了一个新变量 $connection_upgrade,它基于 $http_upgrade 变量的值。
  • default upgrade:如果 $http_upgrade 包含任何值,$connection_upgrade 将被设置为 "upgrade"
  • '' close:如果 $http_upgrade 是空的,$connection_upgrade 将被设置为 "close"

参考:https://www.zhaokeli.com/article/8415.html

我希望、我希望你没有活在别人希望的希望里。

标签:upgrade,http,socket,header,nginx,connection,set,proxy,转发
From: https://www.cnblogs.com/2287keybord/p/18621531

相关文章

  • VC++ Windows Socket 传输文件
    服务端//服务端#include<cstdio>#include<cstdlib>#include<WinSock2.h>#include<Ws2tcpip.h>//inet_pton函数所在头文件#pragmacomment(lib,"ws2_32.lib")//加载ws2_32.dll#defineBUF_SIZE1024intmain(){ //检查文件是否存在 con......
  • 32.Python基础篇-socketserver模块
    socketserver模块是什么?是Python中一个用于简化基于socket的网络服务实现的模块。它提供了一些高层次的类,帮助开发者更容易地实现网络服务。可以实现并发请求处理使用socketserver实现的server端,代码演示:importsocketserver#导入socketserver模块,用于简化基于sock......
  • 30.Python基础篇-socket模块
    介绍socket模块是用于实现网络通信的模块。它提供了底层网络操作的接口,使得用户可以通过网络实现客户端和服务器之间的数据传输。通过socket模块,程序可以通过网络进行数据传输、连接和通信。使用socket模块创建一个TCP服务server端代码#server端代码importsocketsk......
  • linux 安装nginx
    1.解压安装包tar-zxfnginx-1.25.1.tar.gz2.进入解压后文件夹cdnginx-1.25.13.配置nginx./configure4.编译安装make&&makeinstall5.运行nginx进入目录cd/usr/local/nginx/sbin启动nginx./nginx6.配置nginx7.重启nginx/usr/local/nginx/sbin/ngin......
  • ASP.NET Core EventStream (SSE) 使用以及 WebSocket 比较
    在开发环境中,对于实时数据流的需求非常常见,最常用的技术包括Server-SentEvents(SSE)和WebSocket。什么是Server-SentEvents(SSE)?SSE(服务器发送事件)是一种基于HTTP/1.1协议的传达模型,允许服务器向浏览器不断发送数据更新。它直接使用HTTPGET请求,服务器送选用的字......
  • Nginx 优雅重启机制
    nginx的进程模型主进程(MasterProcess):负责管理Nginx的工作进程,处理配置文件的加载和维护。工作进程(WorkerProcesses):实际处理客户端请求,每个工作进程是独立的。reload过程接收SIGHUP信号主进程接收到SIGHUP(挂起)信号,表示需要重新加载配置。解析新配置1.主进程开始读......
  • Ubuntu系统部署程序:修改IP、部署docker、nginx、Redis、onlyoffice、java
    记录一次Ubuntu系统的程序部署修改IP#修改IPvim/etc/network/interfacesautoens33ifaceens33inetstaticaddress192.?.?.?netmask255.255.255.0gateway192.?.?.?#修改DNSvim/etc/systemd/resolved.conf或vi/etc/resolv.confnameserver192.?.?......
  • nginx安装教程笔记(包含访问控制)
    目录一、nginx的安装二、访问控制基于授权访问控制基于客户端的访问控制一、nginx的安装1.安装组件yum-yinstallpcre-develzlib-develgccgcc-c++make2.创建用户useradd-M-s/sbin/nologinnginx3.解压源码包并编译安装tarzxvfnginx-1.12.0.tar.g......
  • Nginx基础使用
    NginxNginx是一个WEB服务【1】、安装nginx1.官网安装2.使用默认的仓库安装,版本较低3.编译方式安装,需要其他功能模块的时候自定义安装#基于官网仓库的安装方式,版本较新,配置易读#准备软件仓库[root@web01~]#cat/etc/yum.repos.d/nginx.repo[nginx-stable]name=......
  • 深入解析:Nginx通过一个域名配置多个HTTPS项目的实现与优化
    目录引言Nginx基础知识什么是NginxNginx的核心功能多项目部署的需求分析实现一个域名配置多个项目准备工作配置HTTPS的基本步骤配置多个项目的两种方式Nginx配置文件详解基于路径区分项目基于子域名区分项目HTTPS配置中的注意事项证书生成与管理多项目使用单一证书......