【Websocket和nginx配置】

打印 上一主题 下一主题

主题 1045|帖子 1045|积分 3135

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假设你的 Nginx 配置的目标是通过 8085 端口担当前端哀求,前端哀求有两类:
普通的 HTTP 哀求(如页面加载、API 哀求等)
WebSocket 哀求(如及时通信)
这里有两个要点必要特别注意:
普通 HTTP 哀求 必要正确转发给后端服务,同时确保支持 HTTP 的代理。
WebSocket 哀求 必要特殊处理,因为 WebSocket 利用了 HTTP 协议进行毗连升级(Upgrade 哀求头)。
更新后的 Nginx 配置
  1. server {
  2.     listen 8085;
  3.     server_name localhost;
  4.     # 处理普通的 HTTP 请求
  5.     location / {
  6.         proxy_pass http://localhost:8086;  # 将请求代理到后端的 HTTP 服务
  7.         proxy_http_version 1.1;  # 必须指定 HTTP/1.1,WebSocket 也需要这个协议版本
  8.         proxy_set_header Host $host;  # 保证后端能够获取到原始请求的 Host
  9.         proxy_set_header X-Real-IP $remote_addr;  # 转发客户端的真实 IP
  10.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 转发客户端的真实 IP 链
  11.         proxy_set_header X-Forwarded-Proto $scheme;  # 转发请求协议(http 或 https)
  12.         proxy_cache_bypass $http_upgrade;  # 确保 WebSocket 不会缓存
  13.     }
  14.     # 处理 WebSocket 请求
  15.     location /ws/ {  # 假设 WebSocket 请求路径为 /ws/
  16.         proxy_pass http://localhost:8086;  # 将 WebSocket 请求代理到后端的 WebSocket 服务
  17.         proxy_http_version 1.1;  # WebSocket 必须使用 HTTP/1.1
  18.         proxy_set_header Upgrade $http_upgrade;  # WebSocket 握手需要 Upgrade 请求头
  19.         proxy_set_header Connection 'upgrade';  # WebSocket 握手需要 Connection 为 upgrade
  20.         proxy_set_header Host $host;  # 确保后端知道请求的主机名
  21.         proxy_cache_bypass $http_upgrade;  # 禁止 WebSocket 请求被缓存
  22.     }
  23. }
复制代码
表明和重点调整
location /: 这一部门负责处理普通的 HTTP 哀求。只要路径不涉及 /ws/,所有哀求都会匹配这个 location 规则。我们确保通过 proxy_pass 将哀求代理到 localhost:8086(后端服务)。


  • proxy_http_version 1.1:这里设置 HTTP 版本为 1.1,这是为了支持 WebSocket 协议,同时确保代理时没有版本冲突。
  • proxy_set_header:这些代理头部帮助后端服务获取正确的哀求信息(如 Host、客户端的真实 IP 地址等)。
location /ws/: 这一部门专门处理 WebSocket 哀求。当哀求路径以 /ws/ 开头时,Nginx 会将哀求转发到后端的 8086 端口。


  • proxy_set_header Upgrade 和 proxy_set_header Connection:这两项配置确保 WebSocket 握手时,Upgrade 和 Connection 哀求头正确地通报,后端才会知道这是一条 WebSocket 哀求。
总结
普通 HTTP 哀求:这些哀求会通过 / 匹配,并被转发到 localhost:8086。
WebSocket 哀求:这些哀求通过 /ws/ 匹配,并被正确地升级到 WebSocket 毗连,代理到后端的 WebSocket 服务。
这样的配置可以同时处理普通的 HTTP 哀求和 WebSocket 哀求,并根据差别的路径(例如 /ws/)做出正确的代理

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表