我试图通过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; }