nginx 403当服务静态文件+反向代理

我试图通过nginx来提供节点应用程序,但首先尝试提供可能位于/public文件夹中的静态文件。 我有这么多的工作 – 但是当访问domain.tld/或静态文件夹的索引,我得到一个403; directory index of "/var/www/domain.tld/" is forbidden 。 所有的权限似乎是正确的,所以我很困惑。

这是我的服务器块;

 server { server_name domain.tld; location / { root /var/www/domain.tld/public; try_files $uri $uri/ @proxy; access_log off; } location @proxy { proxy_pass http://127.0.0.1:3000; } } 

访问任何随机页面(包括假定的子目录)正确代理节点应用程序。 但是,在任何现有静态目录的根目录和根目录下,

有任何想法吗?

这是因为该目录存在,因此try_files检查

 try_files $uri $uri/ @proxy; 

成功。 但没有目录索引文件(通常是index.html ,请参阅索引 ), autoindex也没有打开(请参阅autoindex )。

根据你想要发生的事情,考虑以下选项:

  • 保持原样(并且可以调整使用哪个索引文件)。
  • 总是将目录传递给后端。 从try_files删除$uri/来做到这一点,即:

     location / root /var/www/domain.tld/public; try_files $uri @proxy; } 
  • 通过try_files检查一个特定的索引文件(如果没有find,请求将进入后端):

     location / root /var/www/domain.tld/public; try_files $uri $uri/index.html @proxy; } 
  • 启用autoindex

     location / root /var/www/domain.tld/public; try_files $uri $uri/ @proxy; autoindex on; }