莫莫同学の私家后花园

  • 1、在nginx.conf 配置文件中的 http 模块中添加一下
  • 2、在server模块下的 需要代理的 location 下面添加一下
  • 3、总结
  • 首页
  • 分享
  • 记录
  • 文章归档
  • 榜上有名
  • 友亲链接
  • 关于本站
  • Link
  • Link
  • Link
  • Link

Nginx代理WebSocket响应403或者显示 已完成

  • Momostudent
  • 2023-09-11
  • 0

nginx代理websocket 经常有奇怪的情况,遇到一个项目的nginx配置的,拷贝过去,在另外一个项目就是代理不成功,不生效,经过研究,总结下经验

1、在nginx.conf 配置文件中的 http 模块中添加一下

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

2、在server模块下的 需要代理的 location 下面添加一下

location / { 
proxy_pass http://192.168.1.100; 
proxy_http_version 1.1; 
proxy_read_timeout 800s; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade"; 
proxy_set_header Origin ""; 
proxy_set_header Host $http_host; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

3、总结

其中第一步,测试发现部分不加这段 配置也可以正常代理websocket,建议加一下
第二步中的5、6、7行尤为最重要
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这两行必加
Origin 这行实践中也是部分不加上也可以,但是部分不加上怎么都不行,要么显示403 要么显示 websocket 已完成 状态,并非正常的101 状态。
其他的可以按照是实际情况添加。

© 2025 莫莫同学の私家后花园
Theme by Wing
浙ICP备15001316号 浙公网安备 33048302000438号
  • {{ item.name }}
  • {{ item.name }}