39

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

4

3 回答 3

33

在我的情况下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

授予权限

使用and授予读取执行权限: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

笔记:

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

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

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

测试

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

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

参考: nginx上的 Arch wiki

于 2013-03-07T05:40:20.623 回答
33

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

句法:

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

默认值:disable_symlinks 关闭;

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

该指令出现在版本 1.1.15 中。

于 2012-09-27T15:16:55.420 回答
1

如果 olibre 的回答无济于事,请编辑文件 /etc/nginx/sites-available/default 并将此行添加到您指定服务器根目录的位置。

autoindex on;

保存文件并重启服务器

/etc/init.d/nginx restart
于 2013-02-20T13:30:32.897 回答