首页 > 系统相关 >nginx 代理 WebSocket 配置

nginx 代理 WebSocket 配置

时间:2024-10-29 14:09:19浏览次数:6  
标签:set WebSocket header 代理 nginx proxy 服务器

Nginx 代理 WebSocket 配置

1. 配置文件位置

  • Nginx 配置文件通常位于 /etc/nginx/nginx.conf,也可以在 /etc/nginx/conf.d/ 下创建新的配置文件,例如 websocket.conf

2. 基本配置结构

http {
    upstream websocket {
        server localhost:9301;  # 定义上游 WebSocket 服务器
    }

    server {
        listen 9300;  # 监听 9300 端口

        location / {
            proxy_pass http://websocket;  # 将请求代理到上游服务器
            proxy_http_version 1.1;  # 使用 HTTP/1.1
            proxy_set_header Upgrade $http_upgrade;  # 设置 Upgrade 头
            proxy_set_header Connection "upgrade";  # 设置 Connection 头
            proxy_set_header Host $host;  # 设置 Host 头
            proxy_set_header X-Real-IP $remote_addr;  # 设置真实 IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 设置转发的 IP
            proxy_set_header X-Forwarded-Proto $scheme;  # 设置转发的协议
        }
    }
}

3. 配置说明

  • upstream websocket: 定义名为 websocket 的上游服务器,指定 WebSocket 服务器的地址(localhost:9301)。
  • server: 创建一个 Nginx 服务器块,监听来自客户端的 WebSocket 连接请求。
  • location /: 匹配所有请求,将其代理到上游服务器。
  • proxy_pass: 将请求转发到定义的上游服务器。
  • proxy_http_version: 指定使用 HTTP/1.1,以支持 WebSocket。
  • proxy_set_header: 设置请求头,以支持 WebSocket 协议。

4. 配置步骤

  1. 编辑 Nginx 配置文件,添加上述配置。
  2. 测试配置是否正确:
    sudo nginx -t
    
  3. 重新加载 Nginx 使配置生效:
    sudo systemctl reload nginx
    

5. 注意事项

  • 确保 upstreamserver 块都在同一个 http 块内。
  • 确保 WebSocket 服务器(9301端口)正常运行。

总结

通过上述配置,Nginx 可以成功代理 WebSocket 请求,将来自 ws://localhost:9300 的连接转发到 ws://localhost:9301

标签:set,WebSocket,header,代理,nginx,proxy,服务器
From: https://www.cnblogs.com/echohye/p/18513008

相关文章

  • 大规模语言模型从理论到实践 智能代理的应用实例
    大规模语言模型,智能代理,自然语言处理,深度学习,Transformer,应用实例1.背景介绍近年来,人工智能领域取得了令人瞩目的进展,其中大规模语言模型(LargeLanguageModels,LLMs)作为一种重要的代表,展现出强大的文本生成、理解和翻译能力。这些模型通过训练海量文本数据,学习语言的复......
  • NGINX 1.20.1版安装stream模块
    NGINX于1.9.0版本开始支持stream模块来代理tcp连接。在Centos操作系统若前期以YUM方式安装了nginx,后期想要添加stream模块。1.首先需要检查nginx版本是否支持这一特性,若已支持可直接安装模块,否则重装。2.其次按照如下步骤(部分步骤仅做参考,未必需要执行)2.1安装CentOS的epel-releas......
  • 【项目实战】网络通信协议Socket和WebSocket入门介绍
    一、Socket1.1文件描述符详解文件描述符是在操作系统层面用来访问文件或I/O资源(如网络套接字)的一个抽象的、非负整数。每个进程在打开一个文件或创建一个套接字时,都会得到一个唯一的文件描述符。在Unix/Linux系统中,标准输入(stdin)、标准输出(stdout)和标准错误(stderr)默认......
  • EnhancerByCGLIB和EnhancerBySpringCGLIB代理
    $$EnhancerByCGLIB 和 $$EnhancerBySpringCGLIB 是由两个不同的库生成的Java字节码代理类的命名后缀。尽管两者都与CGLIB(CodeGenerationLibrary)有关,但它们有一些重要的区别。CGLIB代理简介CGLIB是一个开源的字节码生成库,允许在运行时动态创建类和对象。它最著名的用途......
  • rust+tikio实现websocket
    toml[dependencies]libc="0.2.98"tokio={version="1.8.1",features=["sync","time","rt-multi-thread","macros"]}tokio-tungstenite="0.15.0"tungstenite="0.14.0"futu......
  • Nginx 中动态调整 worker 进程绑定到特定 CPU 核心
    在Nginx中动态调整worker进程绑定到特定CPU核心,可以通过以下两种方式实现:###1.使用`auto`参数自动绑定Nginx1.9.10版本引入了`auto`参数,允许Nginx自动将worker进程绑定到可用的CPU上。这种方式不需要手动指定每个worker进程绑定到哪个CPU核心,Nginx会自......
  • 部署nginx-1.26.2
    1.前置工作1.1下载包zlib-1.3.1.tar.gzopenssl-3.2.2.tar.gzpcre2-10.44.tar.gznginx-1.26.2.tar.gz2.创建目录#创建⽬录mkdir-p/data/nginx/logschmod755/root#重要配置chown-Rroot:root/data/nginx3.解压安装包#前提条件,取决于nginx版本问题,由于⽐较......
  • nginx 根路径同时代理 http ws sse 三种请求
    HTTP(HyperTextTransferProtocol):超文本传输协议,是用于在客户端(通常是web浏览器)和服务器之间传输数据的协议。HTTP是Web的基础,用于请求和传输网页、图像、视频等资源。它采用请求-响应模型,支持多种方法(如GET、POST等),并可通过HTTP/1.1和HTTP/2等版本进行优化,以提高性能和用户体验。......
  • Nginx
    Nginx基础source--->全网最全Nginx八股文讲解(25秋招走起~)-CSDN博客面试题source--->40道Nginx精选面试题|二哥的Java进阶之路(javabetter.cn)什么是Nginx?Nginx有哪些优点?Nginx应用场景?Nginx怎么处理请求的?Nginx是如何实现高并发的?什么是正向代理?什么是......
  • centos7 zabbix监控nginx的pv和uv和status_code
    zabbix监控nginx的pv:pv)cat/var/log/nginx/access.log|awk'{print$1}'|wc-l;;zabbix-get验证:[root@bogon~]#zabbix_get-s192.168.253.231-kpv_uv[pv]100zabbix监控nginx的uvuv)cat/var/log/nginx/access.log|awk'{prin......