我有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 [错误] 5490#0:*13打开()"/ var/www/html/index.html"失败(13:权限被拒绝),客户端:XXX.XX.XXX. XXX,服务器:localhost,请求:"GET /index.html HTTP/1.1",主机:"ec2-XXX-XX-XXX-XXX.compute-1.amazonaws.com"
Kurt.. 179
我遇到了同样的问题,这是由于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目录.
我遇到了同样的问题,这是由于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目录.
我遇到了同样的问题.如果您使用的是Fedora/RedHat/CentOS,这可能对您有所帮助:
据SELinux说: setsebool -P httpd_read_user_content 1
希望这可以帮助.
首先,您必须运行以下命令以允许Nginx访问文件系统
sudo setsebool -P httpd_read_user_content 1
您可以使用以下命令检查文件或目录:
ls -Z
如果仍然无法访问,则可以尝试使用以下命令更改文件和文件夹的SELinux属性:
chcon -Rt httpd_sys_content_t /path/to/www
但是,以上命令不适用于FUSE或NFS系统下的文件。
要启用来自FUSE挂载的服务文件,您可以使用:
setsebool httpd_use_fusefs 1
要从NFS挂载启用服务文件,可以使用:
setsebool httpd_use_nfs 1