nginx配置websocket

非加密的WebSocket连接。

shell 复制代码
#ws`# 这是一个ws配置示例,表示使用非加密的WebSocket连接。  
server {  
    listen 8080;  
    server_name example.com;  
  
    location /websocket {  
        proxy_pass http://backend-server;  
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "upgrade";  
        proxy_set_header Host $host;  
        proxy_cache_bypass $http_upgrade;  
    }  
}

SSL/TLS加密的WebSocket连接

shell 复制代码
#wss`# 这是一个wss配置示例,表示使用SSL/TLS加密的WebSocket连接。  
server {  
    listen 443 ssl;  
    server_name example.com;  
  
    ssl_certificate /path/to/certificate.crt;  
    ssl_certificate_key /path/to/private_key.key;  
  
    location /websocket {  
        proxy_pass http://backend-server;  
        proxy_http_version 1.1;  
        # 这个指令设置了HTTP头Upgrade的值。
        # $http_upgrade是一个变量,它的值是HTTP请求头中的Upgrade字段的值。
        # WebSocket协议使用这个头字段来升级普通的HTTP连接为WebSocket连接。
        proxy_set_header Upgrade $http_upgrade;  
        # 这个指令设置了HTTP头Connection的值。
        # WebSocket协议使用这个头字段来指定连接的升级方向。
        # 在这里,它的值被设置为upgrade,表示这个连接应该被升级为WebSocket连接。
        proxy_set_header Connection "upgrade";  
        
        proxy_set_header Host $host;  
        proxy_cache_bypass $http_upgrade;  
    }  
}

简单说明

shell 复制代码
# 配置这两个参数,升级链接为 websocket 
# 如果有向下级代理转发,下级代理也需要配置此参数
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "upgrade";  
        
# 而proxy_set_header Host $host;
# 和proxy_cache_bypass $http_upgrade;这两个指令不是必选的。

# proxy_set_header Host $host;:
# 这个指令设置了HTTP头Host的值,用于指定请求的主机名。
# 如果你在Nginx配置中已经设置了Host头字段的值,那么这个指令可以省略。

# proxy_cache_bypass $http_upgrade;:
# 这个指令指定了在某些情况下是否绕过缓存。
# 当HTTP请求头中的Upgrade字段的值与变量$http_upgrade的值匹配时,缓存将被绕过。
# 这确保了WebSocket连接不会被缓存,因为WebSocket连接是双向的,并且可能包含实时数据。
# 如果你不需要绕过缓存,这个指令也可以省略。        
相关推荐
亚川楼宇自控系统数据中心厂家6 分钟前
消防风机一体化监控系统结合楼宇自控 协同管控原理科普
运维
邪修king8 分钟前
Re:Linux系统篇(三十七):进程间通信Chapter4:System V 共享内存深度解析:为什么它是最快的 IPC?
android·linux·运维
桌管小李26 分钟前
终端安全一体化实战:AI 审计、行为分析、零信任、防拍照与远程运维全解析
运维·服务器·网络·人工智能·windows·安全·macos
流星白龙1 小时前
【Docker】14.存储卷与管理卷Volume
运维·docker·容器
迪康Defender1 小时前
端点安全选型观察:一体化平台与传统 EDR 的场景差异
运维·经验分享·安全·自动化·学习方法·远程工作·安全架构
amcomputer1 小时前
Docker 常用命令总结:从安装到日常使用
运维·docker·容器
ZKNOW甄知科技1 小时前
燕千云迭代版本发布:智能Agent深入业务现场
运维·人工智能·低代码·机器学习·自然语言处理·自动化·aigc
FY@-@1 小时前
云计算基础(下):虚拟化原理与 DAS/NAS/SAN 存储
运维·服务器·云计算
硅基手札2 小时前
SPI技术系列 13 · SPI 调试与排查
linux·运维·stm32·单片机·嵌入式硬件·bug