我在nginx上托管了react app,当我尝试访问任何带有扩展名的文件(例如favicon.ico)时,nginx会抛出403禁止错误,尽管它对于基本的应用程序路由(例如,对于没有扩展名的文件)正常工作。我在下面粘贴了nginx config,我尝试访问的静态文件在/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;
}
}
答案 0 :(得分:1)
例如,使用以下命令检查公共目录的所有者:
ls -l /var/www/deebaco.com/html
nginx
通常以nobody
的身份运行,而应与所有者相同的用户运行。
编辑/etc/nginx/nginx.conf
以设置相同的用户。例如,如果目录归www-data
所有,则添加以下内容:
user www-data;
保存配置后,确认其正确:
sudo nginx -t
如果以上命令确认语法正确,请重新加载nginx配置:
sudo systemctl reload nginx.service
这应该可以解决问题。