
NGINX サーバー用に、静的コンテンツを提供するためだけに仮想サーバーをセットアップしました。現在、画像に有効期限を設定するように設定しようとしています。ただし、このために場所ディレクティブを作成すると、すべてが 404 になります。
私の現在の設定は次のようになります:
静的ファイル
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お探しのページが見つかりませんでした。
ただし、これを削除して次のようにlocation /images
変更すると...location /
location / {
root /srv/www/static;
}
うまくいきました!何が間違っているのでしょうか?
答え1
設定は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;
}
}