站点软链接

站点软链接

我在 Ubuntu 上安装了 Nginx,并且有以下配置文件:

server {
    root /www/test;
    index index.html index.htm;

    server_name .dev.mysite.info;

我在目录 /www/test 中有 HTML 文件并且一切运行正常。

现在我想将我的文件夹更改为软链接:

lrwxrwxrwx  1 root root   33 Jun 17 10:39 test -> /root/Dropbox/digital_ocean/test/

但是在浏览器中收到错误信息:

"500 Internal Server Error"

为什么以及我该如何修复它?

更新:

root@ocean:/var/log/nginx# cat error.log 
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/index.html" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
2013/06/17 11:40:27 [crit] 26197#0: *1 stat() "/www/test/index.html" failed (13: Permission denied), client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"
...
2013/06/17 11:40:27 [error] 26197#0: *1 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 195.239.188.28, server: dev.meditat0r.info, request: "GET / HTTP/1.1", host: "meditat0r.info"

答案1

根文件夹的基本默认权限是 rwx-----,因此除 root 之外,任何人都无法对其进行读取/写入。您可以:

a) 将您的 Dropbox 文件夹移动到其他位置(首选方法:创建单独的非 root 用户)

b)将权限更改为/root 文件夹(永远不要这样做!)

答案2

问题在于符号链接的工作方式。符号链接基本上是一个路标,表示“您要查找的内容不在这里,您必须去其他地方查找/root/Dropbox/digital_ocean/test/”。这意味着该目录/root/Dropbox/digital_ocean/test/必须 a) 具有与 Web 目录相同的文件系统权限,并且 b) Web 服务器需要配置为允许访问该目录。我不是 nginx 专家,但我相信您需要一个Location指令/root/Dropbox/digital_ocean/test/

答案3

检查您的配置文件,以下选项可能相关。

diable_symlinks

http://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks

相关内容