# IM 线 · 第 12 棒 —— 外部连接层的**边缘映射**示例(nginx)。 # # 🔻 第 15 棒更新(2026-09-23):本文件已**落到 47** `/opt/dsh-gateway/nginx-location.conf` # 并用临时配置跑过 `nginx -t`(rc=0,见回报 §15.8);⛔ 但**仍未接进生效中的 vhost** # —— 开流量属"改线上连接层",是单独一步。 # 落点提示:生效站点 = `ai1net.com.conf` 的 443 server 块(`location / → 127.0.0.1:3080`), # 把本文件的 location 插在它**之前**即可;`$connection_upgrade` 该机已存在 # (`/www/server/panel/vhost/nginx/0.websocket.conf`)。 # # 作用:客户端侧的 URL `/api/im/ws` **一个字都不变**,由边缘把它转到外部连接层的 # WebSocket 端点;平台进程内那条 `/api/im/ws` 仍然保留(实例内凭据通道 + 回滚路径)。 # # ⚠️ 前提:`$connection_upgrade` 这个 map 必须在 `http {}` 里存在一次(宝塔/常见发行版 # 的默认配置里通常已有;没有就补下面这段): # # map $http_upgrade $connection_upgrade { # default upgrade; # '' close; # } location = /api/im/ws { # 外部连接层的客户端通道(示例端口,按实际部署改) proxy_pass http://127.0.0.1:18081/connection/websocket; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 长连接:⛔ 不要开缓冲,读超时要大于一次保活间隔(垫片默认 8.7 s) proxy_buffering off; proxy_read_timeout 300s; proxy_send_timeout 300s; # 连接层不落平台日志;排障看连接层自己的日志与 /metrics access_log off; } # 回滚(一行):注释掉上面的 location ⇒ 请求落回平台进程内的 `/api/im/ws`。