nginx 403 禁止错误托管在用户主目录中

nginx 403 禁止错误托管在用户主目录中

/etc/nginx/nginx.conf我已经在本地机器上的 Ubuntu 12.04 上安装了 nginx 1.1.19,并且除了更改用户指令外,保留了默认设置。

/etc/nginx/nginx.conf

user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...

我想让一个简单的静态站点与用户目录中的 Web 根目录一起工作(假设我的用户名是“ubuntu”)。这是我的测试站点的配置。

/etc/nginx/sites-available/测试站点

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /home;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to index.html
    try_files $uri $uri/ /index.html;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
    }

}

现在显然将所有文件都放在 Web 根目录中,因此我不会将其放在真实服务器上,但这说明了我的观点。如果我在 /home/index.html(不在我的 ubuntu 用户文件夹中)创建一个简单的网页,我可以在http://localhost/

这工作得很好。现在我想简单地将 Web 根目录放在用户文件夹内。因此,在 /etc/nginx/sites-available/test-site 中,我将根指令更改为 `root /home/ubuntu;。我重新创建指向 test-site 的符号链接,将 /home/index.html 移动到 /home/ubuntu/index.html,然后停止并启动 nginx 服务器。现在我收到 403 Forbidden 错误。

我首先怀疑这是一个权限问题。然而,当我运行它时,ls -al index.html我看到

-rw-r--r--  1 nginx   www-data   183 Aug 12 13:13 index.html

对我来说这看起来是对的吗?即使运行 chmod 777 /home/ubuntu/index.html,权限也是

-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html

没有帮助。/etc/init.d/nginx configtest也没有产生任何错误,而且我确信/etc/

我已经花了几个小时研究这个问题,现在我想知道我的用户目录有什么特别之处,以至于我无法在其中提供任何东西?Ubuntu 现在加密主目录了吗?这可能是问题所在吗?我在 EC2 Ubuntu 12.04 实例上也遇到了这个问题(不知道那里的用户目录是否加密)

答案1

默认用户主目录权限

因此,Ubuntu 12.04 中用户主目录的默认权限似乎为 700。Nginx 需要对要提供的文件具有读取权限,并且对从根目录到所提供文件的路径中的每个父目录具有执行权限。

您可以通过运行以下命令授予用户目录这些权限:

chmod 701 user_home

您也可以使用 755,这是许多系统上主目录的默认权限设置。

只要 nginx 运行的用户/组(如 nginx.conf 中所定义)对所有要提供的文件具有读取权限并对所有关 Web 根目录具有执行权限,则 Web 根目录中的目录/文件可以属于 www-data 用户或您的常规个人用户。

我刚刚将我的 Web 根目录中的所有目录设置为由我的用户帐户拥有并具有权限 755,并且我将从 Web 根目录中提供的所有文件设置为具有权限 664,因为这些是我的计算机上的默认设置。

将权限编号转换为字符串表示的注意事项。

Ex. drwxr-x--x becomes 751.

忽略第一个字符(d 表示目录,- 表示文件等)。其余 9 个字符构成一个二进制三元组,其中任何非破折号字符均为 1,破折号均为 0。

So drwxr-x--x becomes rwxr-x--x 
becomes 111 101 001 
which is converted to a decimal 751

当我处理权限时,我需要重新学习这一点。

相关内容