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

Azure Web App上PHP8/NGINX环境Laravel应用重定向异常问题

问题原因及解决方案

问题根源

核心问题是Laravel无法正确识别用户实际访问的自定义域名:当请求经Azure Front Door转发到App Service(NGINX环境)时,App Service内部接收到的请求目标是默认的.azurewebsites.net域名,Laravel默认会基于当前服务器收到的请求域名生成重定向URL,因此出现跳转至默认域名的情况。

而之前直接添加强制重定向规则的操作,没有区分请求来源(Front Door转发的是合法内部请求),导致Front Door与App Service之间形成重定向循环,触发“TOO MANY REDIRECTS”错误。


解决方案

1. 配置Laravel信任代理并识别转发头

Laravel需要信任Azure Front Door作为代理服务器,从其传递的X-Forwarded-*头中获取用户实际访问的域名、协议信息:

  • 修改config/app.php,添加信任代理设置:
'trusted_proxies' => ['*'],
// 若需更严谨,可替换为Azure Front Door官方IP段
  • 修改config/session.php,指定会话绑定的自定义域名:
'domain' => env('SESSION_DOMAIN', '你的自定义域名'),
  • 在.env文件中添加环境变量,强制Laravel使用转发头信息:
APP_URL=https://你的自定义域名
TRUSTED_PROXIES=*
FORCE_HTTPS=true

2. 调整NGINX配置,传递正确请求头到PHP-FPM

通过App Service自定义NGINX配置文件(/home/site/nginx.conf),确保将前端真实请求的域名、协议头传递给Laravel:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    # 传递真实请求的域名和协议
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
}

# 确保PHP-FPM接收转发头
fastcgi_param HTTP_X_FORWARDED_HOST $http_x_forwarded_host;
fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto;

3. 验证App Service应用设置

在Azure Portal的App Service应用设置中:

  • 确保HTTP version设置为1.1
  • 检查WEBSITE_REDIRECT_HTTP_TO_HTTPS等重定向设置,避免与当前配置冲突

4. 移除错误重定向规则

删除之前添加的NGINX重定向规则和Laravel中间件中的强制重定向逻辑,消除循环触发源


内容的提问来源于stack exchange,提问作者Richard van den Winkel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:10