イメージサーバーのクラスターの前にnginxインスタンスがあります。
upstream img-farm-1 {
server 10.0.1.1;
server 10.0.1.2;
server 10.0.1.3;
server 10.0.1.4;
# etc
}
location ~ ^/static: {
rewrite /static:(.*) /$1 break;
proxy_pass http://img-farm-1;
limit_except GET {
allow all;
}
}
このクラスターは、オンラインになっている新しいクラスターに取って代わられています。しばらくの間、古いクラスターからイメージを提供したいのですが、イメージが新しい場合、またはイメージが古いクラスターから移行された場合は、新しいクラスターにフォールバックします。新しい。移行が完了したら、元の設定に戻ることができます。
だから私はできると思った
upstream img-farm-2 {
server 10.0.2.1;
server 10.0.2.2;
server 10.0.2.3;
server 10.0.2.4;
server 10.0.2.5;
# etc
}
location ~ ^/static: {
access_log /var/log/nginx/static.access.log;
rewrite /static:(.*) /$1 break;
proxy_pass http://img-farm-1;
error_page 404 = @fallback-2;
}
location @fallback-2 {
access_log /var/log/nginx/static-2.access.log;
proxy_pass http://img-farm-2;
}
しかし、これは機能しません。404が表示されていますが、に何も書き込まれていない限りstatic.access.log
、ディレクティブは実行されていません。error_page 404
static-2.access.log
try_files
ローカルファイルがなく、すべてがプロキシされているので、使用できないと確信しています。
誰かが以前にこのようなことをしたことがありますか?私は何が欠けていますか?