我正在尝试通过 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;
}
}
访问任何随机页面(包括假定的子目录)都会正确代理到节点应用程序。但是,对于根目录 / 和任何现有静态目录的根目录,则会出现 403。
有任何想法吗?
答案1
这是因为目录存在,因此try_files
检查
try_files $uri $uri/ @proxy;
成功。但没有目录索引文件(通常index.html
,请参阅指数),并且autoindex
也没有打开(参见自动索引)。
根据您希望发生的情况,考虑以下选项:
- 保持原样(并可以调整使用的索引文件)。
始终将目录传递给后端。删除
$uri/
即可try_files
,即:location / root /var/www/domain.tld/public; try_files $uri @proxy; }
通过以下方式检查特定的索引文件
try_files
(如果未找到,请求将转到后端):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; }