Nginx不遵循符号链接

Neo*_*Neo 36 symlink nginx

我在Ubuntu 12.04上安装了nginx.但是,nginx似乎没有遵循符号链接.我知道需要更改配置,但我无法找到进行更改的位置.任何帮助赞赏.

cob*_*aco 31

nginx文档中查看以下配置选项:

句法:

disable_symlinks off;
disable_symlinks on |
if_not_owner [from=part];
Run Code Online (Sandbox Code Playgroud)

默认值:disable_symlinks off;

上下文:http,服务器,位置

该指令出现在1.1.15版中.

  • 这是一个非常糟糕的答案,因为 `off` 已经是默认值。换句话说,默认情况下,所有符号链接都已被跟踪;不遵循符号链接是一项额外的安全功能(默认情况下处于关闭状态)。 (4认同)
  • 哦很奇怪.我在1.6.1上,并且因此得到了"未知指令"错误.我用它作为`location/{disable_symlinks off; }`.出现这种情况的原因是什么 (2认同)
  • 您需要在`nginx.conf`配置中使用此选项,而不是您的网站配置.编辑`/ etc/nginx/nginx.conf`并关闭`disable_symlinks; `在`http`块中. (2认同)

oli*_*bre 30

在我的情况下nginx已经配置为遵循符号链接.但问题是用户nginx无法访问我的主文件,因此我的主目录的符号链接无法正常工作.

假设我们有符号链接/usr/share/nginx/www/mylink- >/home/u/html

cd /usr/share/nginx/www
mkdir   -p  /home/u/html
sudo ln -sv /home/u/html mylink  # creates mylink -> /home/u/html
Run Code Online (Sandbox Code Playgroud)

授予权限

给予[R EAD和E X使用ecute权限chmodfind:

chmod +rx /home/u
chmod +rw /home/u/html
find /home/u/html/php -type d -exec chmod +rx {} +
find /home/u/html/php -type d -exec chmod +w  {} +  # optional
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 该权限x名为e x ecute.但是当应用于目录时,此权限允许递归目录树(请参阅Unix模式).

  2. 该命令以find ... -exec chmod ...递归方式更改权限.我们也可以使用该命令,chmod -R +rx /home/myuser/html但最后一个命令也给所有常规文件提供执行权限,我们不希望这样.该选项仅-type d执行chmod目录.

  3. 如果PHP脚本需要写入数据,则最后一个可选命令会提供写入权限.出于安全原因,尝试将写入权限限制为仅限于所需目录.

测试

无需重启ngnix,只需在浏览器中按Ctrl+ F5即可.

警告:建议不要创建指向主目录的符号链接,因为读/写访问错误或符号链接错误可能会暴露您的数字数据......

参考: 关于nginx的 Arch wiki

  • 那是我的问题. (3认同)
  • x是执行iirc,而不是搜索 (3认同)