Nginx 显示 403 禁止

Sum*_*air 6 nginx reactjs

我在 nginx 上托管了 React 应用程序,当我尝试访问任何具有扩展名的文件(例如 favicon.ico)时,nginx 会抛出 403 禁止错误,尽管它对于基本应用程序路由(即对于没有扩展名的文件)工作正常。我在下面粘贴 nginx 配置,我尝试访问的静态文件位于 /var/www/deebaco.com/html 中。我是否需要编写另一个位置块来提供带有扩展名的文件?

server {
    listen 80;
    server_name deebaco.com www.deebaco.com;
    return 301 https://www.deebaco.com$request_uri;
}
server {
    listen 443 ssl;
    server_name deebaco.com;

    ssl_certificate /root/deebaco.com.chained.crt;
    ssl_certificate_key /root/deebaco.com.key;
    return 301 https://www.deebaco.com$request_uri;
}

server {
    listen 443 ssl http2;

   add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    server_name www.deebaco.com;
    root /var/www/deebaco.com/html;

    ssl_certificate /root/deebaco.com.chained.crt;
    ssl_certificate_key /root/deebaco.com.key;

    #location / {
    #try_files $uri $uri/ /index.html?$args;
    #}

    location / {
    try_files $uri /index.html;
    autoindex on;
    autoindex_exact_size off;
    }

}
Run Code Online (Sandbox Code Playgroud)

Meh*_*hdi 9

检查公共目录的所有者,例如使用以下命令:

ls -l /var/www/deebaco.com/html
Run Code Online (Sandbox Code Playgroud)

nginx通常运行为nobody,相反,它应该使用与所有者相同的用户运行。

编辑/etc/nginx/nginx.conf以设置相同的用户。例如,如果该目录属于www-data,则添加以下内容:

user  www-data;
Run Code Online (Sandbox Code Playgroud)

保存配置后,验证它是否正确:

sudo nginx -t
Run Code Online (Sandbox Code Playgroud)

如果上面的命令确认语法正确,则重新加载 nginx 配置:

sudo systemctl reload nginx.service
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题。