少し繰り返しているnginx confファイルを作成しようとしています。 nginxのは、それがファイルを持っているかどうかを確認してから渡す必要となる複数のロケーションブロックを同じ名前の@locationを使用する方法
location @varnish {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass http://localhost:6081;
proxy_set_header Request-URI $request_uri;
}
「標準」の状況の場合:私は、静的なファイルを提供するためにnginxのを使用しています、そして、それは名前の場所@varnishに404エラーやPHPのコンテンツをプロキシバックエンドに至るまで、次は正常に動作します:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log off;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
expires max;
open_file_cache_valid 120m;
try_files $uri @varnish;
}
はしかし、PHPのために、私もそれがファイルを試してみたくない、それだけですぐに@varnishするための要求をリダイレクトする必要があります
location ~ \.php$ {
rewrite . @varnish last;
}
しかし、これは動作していないようです。同じプロキシを参照する2つの別々のほぼ同一のブロック(@ backendとphpの両方)を持つことは苦痛に思えます。そして、人間が何かを入れて忘れることのできる問題のようなものです。
チャームのように働きました! – shrikeh