锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 专题栏目
  3. Nginx专题
  4. 【nginx】nginx配置websocket

【nginx】nginx配置websocket

0
  • Nginx专题
  • 发布于 2024-08-10
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

 本站以分享各种运维经验和运维所需要的技能为主

《python 零基础入门》:python 零基础入门学习

《python 运维脚本》: python 运维脚本实践

《shell》:shell 学习

《terraform》持续更新中:terraform_Aws 学习零基础入门到最佳实战

《k8》暂未更新

《docker 学习》暂未更新

《ceph 学习》ceph 日常问题解决分享

《日志收集》ELK + 各种中间件

《运维日常》运维日常

《linux》运维面试 100 问

 【nginx】nginx 配置 websocket

背景:

公司有应用的转发是使用 websocket 的需求。

配置:

在 Nginx 中配置 WebSocket 支持涉及确保 HTTP 升级请求能够正确地从客户端通过 Nginx 转发到后端 WebSocket 服务。WebSocket 协议开始于一个 HTTP 请求,然后升级为 WebSocket 连接。正确配置 Nginx 是确保这一过程顺利进行的关键。

基本配置

下面是一个基本的 Nginx 配置示例,展示了如何设置 WebSocket 代理:

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            proxy_pass http://websocket_backend;
            proxy_http_version 1.1;
 
            # WebSocket specific headers
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
 
            # Standard headers to pass the host and IP
            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;
 
            # Adjust the timeout settings as needed
            proxy_read_timeout 600s;
            proxy_send_timeout 600s;
        }
    }
}

详细说明

1. **HTTP Upgrade Handling**:
   - `map $http_upgrade $connection_upgrade`: 这个 `map` 块是用来确定何时需要升级连接。如果 `Upgrade` 头被设置(HTTP 请求想要升级),则 `Connection` 头将被设置为 `upgrade`。否则,将其设置为 `close`。
 
2. **Proxy Settings**:
   - `proxy_pass http://websocket_backend;`: 这里将请求代理到名为 `websocket_backend` 的后端服务器。你需要根据实际后端服务进行相应配置。
   - `proxy_http_version 1.1;`: WebSocket 需要 HTTP/1.1,因为 HTTP/1.0 不支持 `Upgrade` 头。
   - `proxy_set_header Upgrade $http_upgrade;` 和 `proxy_set_header Connection $connection_upgrade;`: 这些头部确保了 WebSocket 的 `Upgrade` 请求正确传递。
 
3. **Standard Proxy Headers**:
   - 设置一些标准的代理头部,如 `Host`, `X-Real-IP`, `X-Forwarded-For`, 和 `X-Forwarded-Proto`,以确保后端服务接收到正确和必要的信息。
 
4. **Timeout Settings**:
   - `proxy_read_timeout` 和 `proxy_send_timeout` 设置较长的超时时间,以支持 WebSocket 连接通常需要保持较长时间的打开状态。

后端配置

确保你的 WebSocket 服务配置正确,能够接受来自 Nginx 的代理连接。如果后端是 Node.js, Python 或任何其他支持 WebSocket 的语言,确认它们配置为监听来自 Nginx 代理的连接。

调试和测试

部署配置后,确保进行充分的测试以验证 WebSocket 连接是否稳定并且性能符合预期。使用 WebSocket 客户端库或工具(如 Chrome 开发者工具)可以帮助你测试和调试实时的 WebSocket 连接。

这样的配置确保了 WebSocket 连接能够通过 Nginx 顺利进行,同时保持了高性能和可靠性。

标签: #软件开发 1171
相关文章

Nginx部署前端Vue项目 2024-09-26 17:57

在使用Nginx部署前端Vue项目时,我们主要关注的是如何高效地将静态资源(HTML、CSS、JavaScript、图片等)提供给客户端浏览器。Vue.js是一个流行的JavaScript框架,用于构建用户界面,而Nginx作为一个高性能的HTTP和反向代理服务器,非常适合用于静态资源的托管。以下将

Nginx+Tomcat负载均衡、反向代理 2024-09-28 15:11

目录 一、代理 1.概述 二、Nginx反向代理 1.七层反向代理 - 动静分离

Centos下安装nginx步骤解析 2024-08-19 16:06

最近研究LNMP,首先要在linux下配置nginx服务器,话不多说,上步骤 1、编译环境gcc g++ 开发库之类的需要提前装好   yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 2、首先安装PC

Nginx 反向代理和负载均衡 2024-08-19 14:21

❤之前粗略的学习了一下nginx,也能够简单的进行使用,但时间长了难免就会出现遗忘,遇到命令啥的有时候还得去网上搜,索性就自己整理了一份,以后看起来也比较方便。有什么不对的地方还请大家多多指正。 目录 一、nginx 简介 1、nginx 概述 2、正向代理 3、反向代理 4、负载均衡<

nginx: [emerg] getpwnam(“nginx“) failed in /etc/nginx/nginx.conf:1 2024-08-13 17:01

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 在 Nginx 配置文件(/etc/nginx/nginx.conf)中出现错误信息 “ngin

隐藏nginx响应头中的server信息(HTTP服务器版本信息泄漏) 2024-08-13 13:40

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net 安全审计中有时会有 漏洞名称 HTTP 服务器版本信息泄漏 漏洞描述 目标服务器

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.