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
相关产品推荐
相关产品推荐

