为啥 Nginx 即使使用 root 用户也会返回 403 Forbidden 错误

Posted

技术标签:

【中文标题】为啥 Nginx 即使使用 root 用户也会返回 403 Forbidden 错误【英文标题】:Why Nginx return 403 Forbidden error even using root user为什么 Nginx 即使使用 root 用户也会返回 403 Forbidden 错误 【发布时间】:2020-03-26 04:14:23 【问题描述】:

我已经在 CentOS 7 64bit 中安装了 nginx,使用命令 yum install nginx 一切顺利,直到我不更改默认配置。

但是当我想将根目录更改为conf.d/default.conf 中的某个其他位置时,例如:/home/ftpuser

location / 
    root   /home/ftpuser;
    index  index.html;
 

nginx.conf中的用户到ftpuser

user  ftpuser;

其中ftpuser是普通用户,主目录在/home位置,但是Nginx返回403错误。即使我在/home 位置创建了一个新的test 目录,权限为777,Nginx 仍然返回403。

然后我把用户从ftpuser改成rootuser,问题依旧存在。

然后我将/home/fptuser文件夹的权限改为777 by:chmod 777 ftpuser,但问题依旧存在。

查了很多,给了Nginx最高权限,为什么还是返回403?

如果有人知道,请告诉我原因和解决方法!

Nginx 版本: 1.17.6

更新: 错误日志:

2019/11/30 20:39:19 [错误] 2195#2195: *10 open() “/home/ftpuser/index.html”失败(13:权限被拒绝),客户端: 192.168.133.1,服务器:localhost,请求:“GET / HTTP/1.1”,主机:“192.168.133.134”

【问题讨论】:

@RichardSmith 我更新了问题,错误日志显示权限问题。 @emix 我知道,但我不想禁用 SElinux。由于安全问题,这不是一个很好的解决方法。 这不是一个编程问题,而是严格与服务器相关的。这是一个 SElinux 问题。您可以在日志中找到更多详细信息。 @emix 是的,这就是为什么我使用 Nginx 和 centos7 标签,而不是 java 或 c++ 等。那么如何解决这个问题,禁用 SElinux 不是解决方案。 @emix 错误日志显示了上述问题中的消息。 【参考方案1】:

经过一番搜索,终于找到了解决办法。

这是 SELinux 策略问题。

那么如何解决呢?

只需转到this 链接并执行步骤,它将解决 SELinux Policies 问题。

如果其他人在 CentOS 7 中遇到与 Nginx 相同的问题,我希望它可以帮助他们!!

【讨论】:

以上是关于为啥 Nginx 即使使用 root 用户也会返回 403 Forbidden 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使我设置了 STATIC_ROOT 和 urls.py 也会出现 404 错误

为啥即使在指定返回 - 后台线程到主线程问题后代码也会执行?

为啥 pod 即使成功运行也会返回 Error 或 ExitCode:0?

为啥即使文件存在于服务器上,jQuery ajax 也会返回 404 Not found 错误?

为啥即使数据库中没有对象,django paginator.num_pages 也会返回一个?

即使由用户事件触发,Facebook 权限弹出窗口也会被阻止。为啥?