我目前有一个设置,其中所有静态文件由Nginx提供,如果没有找到静态文件,则将其移动到node.js服务器上.不幸的是,我收到了根请求的403错误.其他一切都很好.
server {
listen *:80;
error_page 404 = /404.html;
root /web/sites/this.site.tld/static;
index home;
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_X_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://thisSiteApp;
proxy_redirect off;
}
}
upstream thisSiteApp{
server 127.0.0.1:3000;
}
我很确定问题在于索引指令.将“index.html”文件放在static中并将指令更改为“index index.html”可以正常工作.但我真正想做的是让它在节点服务器上查找索引位置,同时仍然在不查看节点的情况下提供静态文件.
NB.如果我把代理设置放在/ location下,那么节点服务器服务于root就好了(没有静态文件,但它可以很好地服务).
最佳答案
你的try_files指令有一个正斜杠,所以当进入example.org/的裸根时,Nginx将尝试为目录提供服务.
原文链接:https://www.f2er.com/nginx/435430.html代替:
location / {
try_files $uri $uri/ @proxy;
}
使用:
location / {
try_files $uri @proxy;
}