使用 Fedora 33,我尝试指示 nginx 从
/usr/share/nginx/html
以外的不同目录提供内容。
将
root /usr/share/nginx/html
更改为 root /home/william/Documents/testserve
会导致 HTTP 403。许多网站认为权限是一个问题,但在将文件夹及其内容的模式更改为 777 并将所有权更改为 nginx 后 - 我相当确定这不是问题。我还暂时禁用了 selinux,看看 selinux 政策是否是一个问题。
恢复默认配置并在
localhost.conf
中创建/etc/nginx/conf.d
也被证明是无效的。我如何指示 nginx 提供来自不同目录的内容?
# /etc/nginx/nginx.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# /etc/nginx/conf.d/localhost.conf
server {
listen 80;
server_name localhost;
root /home/william/Documents/testserve;
index index.php index.html;
}
我也遇到了同样的问题,我花了10多个小时才解决。我不知道这是否是您在这种情况下问题的解决方案,但对于任何在 Fedora 上遇到 403 问题的人来说,有一种称为 SeLinux (安全强制执行)的东西,它可能会阻止访问文件,即使权限正确。
您可以通过以下方式检查其是否已启用:
getenforce
(强制=开启)
并使用以下命令打开和关闭它:
setenforce 0
(或 1,具体取决于您想要的)
如果它在 Selinux 关闭的情况下工作,您可以通过以下方式解决问题:
sudo chcon -R -t httpd_sys_content_t /var/www/website.com
希望对大家有帮助
检查所有目录是否都是 root 用户,对我来说这就是工作!!