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

Laravel项目Nginx嵌套软链接导致root目录指向异常如何修复

Nginx软链接跟随不符合Laravel版本发布预期的修复方案

核心原因是Nginx默认会递归解析路径中所有软链接到实际物理路径,才会出现root目录最终跳转到/home/user/project/public_html的问题,可根据你的业务场景选择以下任意方案修复:

方案1:调整Nginx软链接跟随规则(不改变现有目录软链接逻辑)

直接修改对应站点的Nginx配置,通过disable_symlinks指令控制软链接跟随行为:

  • 如果你需要保留上层/home/user/www/site到版本目录的软链接跟随,仅禁止解析版本目录内public_html的软链接:
    在server配置块中添加如下配置:
    disable_symlinks if_not_owner from=/home/user/www/site;
    
  • 如果你完全不需要在站点root路径下跟随任何软链接:
    直接添加如下配置:
    disable_symlinks on;
    

配置修改完成后,先执行nginx -t校验配置是否合法,校验通过后执行systemctl reload nginx重载配置即可生效。

注意:disable_symlinks指令要求Nginx版本不低于1.1.15,且运行Nginx的worker进程对对应目录有可读权限。

方案2:调整发布流程软链接规则

如果业务允许调整现有软链接设置,可从根源避免路径解析问题:

  • 取消每个版本目录下public_html到/home/user/project/public_html的软链接,将/home/user/project/public_html的静态资源直接同步到每个版本的public_html目录内
  • 保留/home/user/www/site到当前生效版本目录的软链接,Nginx配置不需要修改即可正常解析到对应版本的静态资源

方案3:直接调整Nginx root路径配置

跳过两层软链接跳转,直接将root指向最终生效路径:

  • 将版本目录切换的软链接移到public_html外层,比如创建/home/user/releases/current软链接指向当前生效的版本目录
  • 将Nginx的root配置修改为root /home/user/releases/current/public_html;
  • 重载Nginx配置后即可避免多层软链接递归解析的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:04