我websites
在该/
目录中创建了一个文件夹,并授予其完全权限sudo chmod -R 777 /websites/
。
之后,我进行了更改以/etc/nginx/conf.d/default.conf
指向该websites
目录:
server {
listen 80;
server_name localhost;
location / {
root /websites;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /websites/nginx/html;
}
}
403 Forbidden
但是当我尝试浏览服务器的公共 IP 时,我遇到了, 。
为什么会发生这种情况?我该如何解决?
我在 nginx error.log 中有这个:
2017/08/27 20:41:03 [error] 3849#3849: *37 "/websites/index.html" is
forbidden (13: Permission denied), client: **.**.130.159, server:
localhost, request: "GET / HTTP/1.1", host: "**.**.**.120"
答案1
错误日志说得很清楚:
- 你的 nginx 会尝试读取
/websites/index.html
,但它不能 - 这就是它给出 403 错误的原因,而不是因为它的配置。
正是因为13: Permission denied
.这是系统错误。因此,您的 nginx 配置良好,它尝试读取该文件,但无法读取。
下一个问题是,为什么不能。首先,您应该检查它的作用。向正在运行 nginx 的用户执行 Sudo(可能是 www-data,因此命令是sudo -u www-data /bin/bash
:),然后尝试自己读取该文件 ( cat /websites/index.html
)。
下一步取决于结果是什么。
@sebasth 的评论是正确的:
文件/文件夹的权限可能错误,或/和 SELinux 策略不允许访问。如果您启用了 SELinux,您应该检查审核日志(诸如
audit2why
可能会有所帮助)。
我认为最有可能的两种结果:
chmod
尽管您的命令看起来没问题,但权限设置不正确- 有一些 SELinux 可以让你的生活变得更加美好。
答案2
chmod 777 /var/www/your_site
解决了问题