当前位置: 首页 > 知识库问答 >
问题:

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

翟黎明
2023-03-14

我已经安装了Nginx并正确显示了测试页面。如果我试图更改根路径,会出现403禁止的错误,即使所有权限都相同。此外,nginx用户也存在。

nginx。形态:

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 open()“/var/www/html/index.html”失败(13:权限被拒绝),客户端:XXX。XX。XXX。三十、 服务器:localhost,请求:“GET/index.html HTTP/1.1”,主机:“ec2 XXX XXX XXX XXX.compute-1.amazonaws.com”

共有3个答案

李锦
2023-03-14

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

  • 根据SELinux:setsebool-Phttpd_read_user_content1

希望这有帮助。

高皓
2023-03-14

首先,您必须运行以下命令以允许nginx访问文件系统

sudo setsebool-P httpd_read_user_content 1

您可以使用以下命令检查文件或目录:

ls -Z

如果仍然无法访问,可以尝试使用以下命令更改文件和文件夹的SELinux属性:

chcon -Rt httpd_sys_content_t /path/to/www

但是,上述命令不能应用于FUSE或NFS系统下的文件。

要启用从FUSE mounts提供文件,可以使用:

setsebool httpd_use_fusefs 1

要启用从NFS装载服务文件,可以使用:

setsebool httpd_use_nfs 1
子车俊材
2023-03-14

我也遇到了同样的问题,这是由于塞利努克斯。

要检查SELinux是否正在运行,请执行以下操作:

# getenforce

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

# setenforce Permissive

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

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

# chcon -Rt httpd_sys_content_t /path/to/www

如果您仍然有问题,请查看getsebool-a中的布尔标志,尤其是您可能需要打开httpd\u can\u network\u connect进行网络访问

# setsebool -P httpd_can_network_connect on

对我来说,允许超文本传输协议服务于我的www目录就足够了。

 类似资料:
  • 问题内容: 以下是ajax请求。 这就是delete.php 运行代码后,它将成功删除文件,但不会显示任何消息。 我也尝试将ajax请求更改为: 仍然不显示该消息。所以我想在delete.php文件中出了点问题。请帮忙。 问题答案: 进行jquery + ajax + php的最佳方法如下: jQuery的: PHP:

  • 从Gmail的电子邮件附件上载到Google Drive: 朋友们大家好,如果我删除文件目录中的token.pickle和token_drive.pickle文件(这些文件是与google cloud分开创建的)并运行代码: ”ResumableUploadError: 这似乎是Gmail和Drive同时身份验证的问题,因为media\u body和file\u元数据返回一个值,但我无法解决这个问

  • 我一直在尝试使用服务帐户访问Calendar v3 API。我已经添加了范围https://www.googleapis.com/auth/calendar并与该服务帐户的电子邮件地址共享了我的日历。 我也一直在用同一个服务帐户访问https://www.googleapis.com/auth/coordinate scope,它工作得很好。 此外,尝试撤销访问权限,如这里所述:为什么谷歌日历AP

  • 我将只同意graph API中的特定管理权限。 但它请求所有租户权限。 当前逻辑为 如何请求对特定权限的同意?

  • 问题内容: 考虑以下Python代码: 运行此命令时,将引发异常: 但是,将其放入浏览器后,搜索将按预期返回。这里发生了什么?如何克服这个问题,以便可以通过编程方式搜索Google? 有什么想法吗? 问题答案: 如果您想通过编程界面“适当”进行Google搜索,请查看Google API 。这些不仅是搜索Google的正式方法,而且如果Google更改结果页面的布局,它们也不太可能改变。

  • 问题内容: 这是我非常简单的表格(Postgres): 如果我尝试使用FROM数据库下面的命令插入String,那么一切都会按预期工作,不足为奇的是,数据库中会出现一个新行。 但是,如果我想通过JDBC插入字符串,则不会插入任何内容,尽管prepareStatement.executeUpdate()始终返回1。 下面是我的方法应该起作用,但是没有起作用。请告诉我是否缺少明显的东西。我想补充一点,