【问题标题】:Nginx not following symlinksNginx 不遵循符号链接
【发布时间】:2012-09-19 09:57:14
【问题描述】:

我已经在 Ubuntu 12.04 上安装了 nginx。但是,nginx 似乎不遵循符号链接。我知道这需要进行配置更改,但我无法找到在哪里进行更改。任何帮助表示赞赏。

【问题讨论】:

标签: nginx symlink


【解决方案1】:

在我的例子中,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

授予权限

使用chmodfind 授予read 和execute 权限:

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

注意事项:

  1. 权限x 被命名为execute。但是当应用于目录时,此权限允许递归目录树(请参阅Unix modes)。

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

  3. 如果您的 PHP 脚本需要写入数据,最后一个可选命令将授予 写入权限。出于安全原因,尝试将写入权限限制为仅需要的目录。

测试

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

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

参考:Arch wiki on nginx

【讨论】:

  • x 是执行 iirc,不是搜索
【解决方案2】:

查看nginx docs 中的以下配置选项:

语法:

disable_symlinks off;
disable_symlinks on |
if_not_owner [from=part];

默认:disable_symlinks 关闭;

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

该指令出现在版本 1.1.15 中。

【讨论】:

  • O.o 很奇怪。我在 1.6.1 上,并且收到一个“未知指令”错误。我用它作为location / { disable_symlinks off; }。为什么会发生这种情况?
  • 您需要在nginx.conf 配置中使用此选项,而不是在您的网站配置中。编辑/etc/nginx/nginx.conf 并将disable_symlinks off; 放在http 块中。
  • 这是一个非常糟糕的答案,因为off 已经是默认值了。换句话说,默认情况下,所有符号链接都已被遵循;不遵循符号链接是一项额外的安全功能(默认情况下是关闭的)。
【解决方案3】:

如果 olibre 的回答没有帮助编辑文件 /etc/nginx/sites-available/default 并在您指定服务器根目录的位置添加此行。

autoindex on;

保存文件并重启服务器

/etc/init.d/nginx restart

【讨论】:

  • autoindex 允许 nginx 生成目录中的文件列表
  • 声称这个设置不同的设置使符号链接有效?
猜你喜欢
  • 2016-01-30
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2014-02-20
  • 1970-01-01
相关资源
最近更新 更多