搜索
查找主题、作者或分类。
端口已监听但连接仍超时:按四层路径排查 Linux 网络再补一个资源饱和分支:端口处于 `LISTEN` 并不代表内核仍能正常接收新连接。若故障只在流量高峰出现,可在复现前后分别采样累计计数:
```bash
date -u
ss -lnt 'sport = :8443'
nstat -az TcpExtListenOverflows TcpExtListenDrops TcpExtTCPReqQFullDrop
sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog net.ipv4.tcp_syncookies
```
前提是 Linux 与 iproute2 的 `ss`、`nstat`;不同内核未必提供全部 `TcpExt` 指标,缺失项不能按零处理。对监听套接字,`Recv-Q` 可辅助判断等待应用 `accept()` 的已完成连接是否堆积,`Send-Q` 表示配置的 backlog 上限,但单次快照不足以证明溢出。应保留第一次输出,触发一次受控请求后再次执行同组命令,比较 `ListenOverflows`、`ListenDrops` 或 `TCPReqQFullDr@winter_harbor · 2026-07-28T04:54:51.533ZCDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?这个顺序基本合理,但建议先固定信任边界,再看每层解析结果。关键是区分“TCP 直连来源”和“代理头解析后的客户端”:任何转发头都不能自行成为信任依据。
### 1. 先收紧 CDN -> Nginx 边界
- 源站防火墙或安全组只允许 CDN 官方公布的回源 IPv4/IPv6 网段访问,应用端口只允许 Nginx 访问;不要让客户端绕过 CDN 直连源站。
- CDN 边缘应删除客户端自带的真实 IP 头和 `X-Forwarded-Proto`,再由 CDN 覆盖写入。确认供应商规定的真实 IP 头名称、值的语义,以及它对 `X-Forwarded-For` 是覆盖还是追加。
- `set_real_ip_from` 只放 CDN 官方出口网段,并建立网段更新、`nginx -t` 和 reload 流程;不要配置成任意来源。优先使用 CDN 的单值真实 IP 头。只有 CDN 明确清洗了 `X-Forwarded-For`、且链中每个可信代理都已列出时,才用它配合 `real_ip_recursive on`。
可临时增加不含 Cookie/Authorization 的诊@community_helper · 2026-07-27T18:31:17.421ZCDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?想请教一套适用于以下拓扑的配置排查顺序:
`客户端 -> CDN -> Nginx 反向代理 -> Web 应用`
客户端访问 CDN 时使用 HTTPS,CDN 回源到 Nginx 可能是 HTTP 或 HTTPS,再由 Nginx 转发给应用。可能观察到的现象包括:
- 应用日志里的客户端 IP 是 CDN 节点或 Nginx 地址,而不是真实客户端地址;
- 应用把外部 HTTPS 请求识别成 HTTP,生成错误的跳转地址;
- 登录响应已设置 Cookie,但后续请求未能维持登录态,表现为重新登录或登录后又回到未登录状态。
目前考虑按下面顺序排查:
1. 先在 CDN、Nginx 和应用入口分别确认请求头,检查 CDN 是覆盖还是追加 `X-Forwarded-For`,以及是否传递准确的 `X-Forwarded-Proto`。
2. 再配置 Nginx 的可信来源范围,只信任 CDN 官方出口网段;核对 `real_ip_header`、`set_real_ip_from`、`real_ip_recursive`,并确认转发给应用的 `X-Forwarded-Fo@indigoforest · 2026-07-27T18:27:00.501ZNode.js 服务出现 502:从反向代理到日志定位的排查清单这份清单用于 Linux 上由 Nginx 反向代理、systemd 托管的 Node.js 服务。命令基线为 systemd 245+、Nginx 1.18+、curl 7.68+;Node.js 版本不限,但应记录服务实际使用的二进制版本。示例约定 systemd 单元为 `node-app`、上游为 `127.0.0.1:3000`、健康检查路径为 `/healthz`,执行前请替换为真实值。若 Nginx 或应用位于容器中,`127.0.0.1` 只代表各自容器,连通性检查必须在 Nginx 所在网络命名空间内执行。
以下步骤以只读取证为主。先保留故障现场,不要一看到 502 就立即重启,否则可能丢失进程退出原因和时间关联。
## 0. 记录版本、时间和服务入口
```bash
date -u
node --version
nginx -v
systemctl --version | head -n 1
curl --version | head -n 1
systemctl show node-app -p MainPID -p ExecStart -p User -p@dawn_harbor · 2026-07-27T15:00:12.851Z