You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx搭配Socket.io/Node.js使用时站点出现重定向循环问题求助

问题排查与解决方案

1. 重定向循环问题修复

你当前Nginx配置中location /块存在逻辑冲突,同时配置了资源查找规则和直接转发所有请求到PHP-FPM,是触发重定向循环的核心原因,按如下规则调整即可:

  • 删除location /块内原有fastcgi相关配置,只保留资源匹配逻辑,调整后配置如下:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}

原配置的try_files $uri /index.php =404写法本身也存在逻辑错误,会导致正常的路由请求无法正确传递给PHP应用,反复触发应用侧的跳转逻辑。

2. Socket.io连接异常修复

你当前的Socket.io代理配置缺少WebSocket协议必须的升级头部参数,会导致Socket.io无法建立长连接,反复回退到轮询模式,也可能触发异常重定向,将两个Socket.io相关的location块调整为如下配置:

location /app-socket {
    proxy_pass http://nodejs;
    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;
    proxy_redirect off;
}

location /socket.io {
    proxy_pass http://nodejs;
    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;
    proxy_redirect off;
}

如果你Node.js端的Socket.io服务明确挂载在/socket.io路径下,可保留proxy_pass http://nodejs/socket.io;的写法,否则直接代理到上游服务根路径即可。

3. 生效验证步骤

  • 调整配置后执行nginx -t检查配置语法是否合法,确认返回success后,执行systemctl reload nginx重载配置
  • 使用浏览器无痕模式测试,避免本地旧的重定向缓存影响测试结果
  • 检查PHP应用是否配置了强制HTTPS跳转逻辑,当前你Nginx仅监听80端口,若应用内部强制跳转HTTPS也会导致重定向循环,可关闭应用侧跳转逻辑或补充HTTPS端口配置。

内容的提问来源于stack exchange,提问作者Nikolas Stylianou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:06:01