为什么Nginx会返回403,即使所有权限设置正确?

我有Nginx设置并正确显示测试页面。 如果我尝试更改根路径,即使所有权限都相同,我也会得到403 Forbidden错误。 此外,nginx用户存在。

nginx.conf:

user nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;

pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    index   index.html index.htm;

    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html; #changed from the default /usr/share/nginx/html
    }
}

namei -om /usr/share/nginx/html/index.html

f: /usr/share/nginx/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html

namei -om /var/www/html/index.html

f: /var/www/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxr-xr-x root root html
-rw-r--r-- root root index.html

错误日志

2014/03/23 12:45:08 [error] 5490#0:* 13 open()“/var/www/html/index.html”失败(13:Permission denied),客户端:XXX.XX.XXX。 XXX,server:localhost,请求:“GET /index.html HTTP / 1.1”,主机:“ec2-XXX-XX-XXX-XXX.compute-1.amazonaws.com”


我遇到了同样的问题,这是由于SELinux

要检查SELinux是否正在运行:

# getenforce

要在下次重新启动之前禁用SELinux:

# setenforce Permissive

重新启动Nginx并查看问题是否仍然存在。 如果您想永久更改设置,您可以编辑/etc/sysconfig/selinux

如果SELinux是你的问题,你可以运行下面的命令允许nginx为你的www目录服务(确保你在测试之前重新打开SELinux,即# setenforce Enforcing

# chcon -Rt httpd_sys_content_t /path/to/www

如果仍有问题,请查看getsebool -a中的布尔标志,特别是您可能需要打开httpd_can_network_connect才能访问网络

# setsebool -P httpd_can_network_connect on

对我来说,足以让http服务于我的www目录。


我正在使用:

sudo service nginx start

如果我使用:

sudo nginx 

...一切正常。 任何人都可以解释这两者之间的区别吗?


我遇到了同样的问题。 如果你使用的是Fedora / RedHat / CentOS,这可能会帮助你:

  • 根据SELinux: setsebool -P httpd_read_user_content 1
  • 希望这可以帮助。

    链接地址: http://www.djcxy.com/p/32413.html

    上一篇: Why does Nginx return a 403 even though all permissions are set properly?

    下一篇: Rails, Passenger, Nginx, I get "403 Forbidden" but why?