Nginx
提供靜態文件+反向代理時的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; } }
訪問任何隨機頁面(包括假定的子目錄)正確代理到節點應用程序。但是,對於任何現有靜態目錄的根 / 和根,都是 403。
有任何想法嗎?
那是因為目錄存在,因此
try_files
檢查try_files $uri $uri/ @proxy;
成功。但是沒有目錄索引文件(通常
index.html
參見index),autoindex
也沒有打開(參見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; }