Nginx
位置指令不起作用
對於我的 NGINX 伺服器,我設置了一個虛擬伺服器來輸出靜態內容。目前我正在嘗試設置它,以便圖像具有到期日期。但是,當我為此創建位置指令時,一切都只會導致 404。
我現在的配置是這樣的:
/srv/www/static.conf
server { listen 80; server_name static.*.*; location / { root /srv/www/static; deny all; } location /images { expires 1y; log_not_found off; root /srv/www/static/images; } }
請注意,此文件包含在 /etc/nginx/nginx.conf 中,位於 http 指令中
我正在嘗試訪問圖像,比如說
static.example.com/images/screenshots/something.png
…。果然,圖像也存在於/srv/www/static/images/screenshots/something.png
。但是,去所說的地址不起作用,只是告訴我404 Not Found。但是,如果我刪除
location /images
並更改location /
為以下內容……location / { root /srv/www/static; }
有用!我在這裡做錯了什麼?
您的配置遵循 nginx 配置陷阱您應該在配置 nginx 之前閱讀它。
要回答您的問題,您不應
root
在位置中定義,定義一次,位置標籤將自動讓您分配對特定目錄的訪問權限。此外,不要為圖像目錄定義自定義根目錄,而是使用
try_files
. 將$uri
映射/images/
目錄與/static/images/
.試試這個配置:
server { listen 80; server_name static.*.*; root /srv/www; location /static/ { deny all; } location /images/ { expires 1y; log_not_found off; autoindex off; try_files $uri static/images$uri; } }