Nginx 无“配置符号链接跟随属性”的指令,是否解析取决于权限、disable_symlinks设置及alias写法;需确保Nginx用户对链接文件有读权限、对目标目录有执行权限、对目标文件有读权限,且未启用disable_symlinks on。

Nginx 本身没有“配置符号链接跟随属性”的指令,它不提供类似 Apache 的 Options +FollowSymLinks 这样的开关。能否读取符号链接指向的目标资源,取决于底层系统权限、Nginx 安全限制和配置写法,而非 server 块中某条专门开启 symlink 的属性。
关键不是“开启跟随”,而是避免被拦截
默认情况下,Nginx 是允许解析符号链接的——前提是没被显式禁止。最常导致 403 错误的原因是误启用了 disable_symlinks 指令:
-
disable_symlinks on;—— 全局禁用,所有符号链接访问都会被拒绝 -
disable_symlinks from=/tmp;—— 仅对指定路径下的链接生效,但若你的符号链接或目标路径落在该范围内,也会被拦 - 正确做法:确认 server 或 http 块中 没有出现 disable_symlinks 相关配置;如有,直接注释或改为
disable_symlinks off;
server 块中必须满足的三个权限前提
即使配置干净,Nginx worker 进程(如 www-data 或 nginx 用户)也必须同时具备以下权限:
- 对符号链接文件本身有 read 权限(能读链接内容,即知道它指向哪)
- 对符号链接指向的 目标目录 有 execute 权限(即能 cd 进入)
- 对符号链接指向的 目标文件 有 read 权限(才能返回内容)
例如:/var/www/media → /mnt/nas/public,就要确保 www-data 能读 /var/www/media、能进 /mnt/nas/public、能读 /mnt/nas/public/image.jpg。
alias 指令的写法直接影响符号链接是否生效
在 server 块或 location 块中使用 alias 时,值必须是符号链接文件所在的路径,不是它指向的目标路径:
- ✅ 正确:
alias "/var/www/shared-media/";(其中/var/www/shared-media/是一个符号链接) - ❌ 错误:
alias "/mnt/nas/media/";(这绕过了链接,直接指目标,失去了 alias + symlink 的设计意图)
注意用双引号包裹路径,尤其含空格或特殊字符;且 alias 后必须以 / 结尾(目录型 alias),否则可能引发 404。
跨文件系统或网络挂载需额外检查
如果符号链接目标挂在 NFS、CIFS 或 NAS 上,某些挂载选项会禁用内核级符号链接解析:
- 检查挂载参数是否含
nosymfollow、noexec或nosuid - 临时测试:用
sudo -u www-data ls -l /mnt/nas/public看是否能列出内容;若报 Permission denied 或 Not a directory,大概率是挂载限制 - 修复方式:重新挂载时去掉相关限制,例如添加
symfollow(具体依文件系统而定)


















