Nginx en tant que proxy de mise en cache: essai d'une seconde en amont si le premier retourne 404

3

Pour utiliser nginx en tant que proxy de mise en cache, existe-t-il un moyen de configurer 2 serveurs en amont de manière à toujours essayer le premier sauf si celui-ci renvoie un 404, et uniquement dans ce cas, il essaiera le second en amont?

Je connais l' backupoption du bloc de configuration en amont, mais cela n'essaie ce serveur que si le premier est indisponible. Je parle de savoir si le premier serveur est disponible mais que le fichier demandé en particulier renvoie 404.

utilisateur779159
la source

Réponses:

1

Je ne suis pas sûr de savoir pourquoi vous voudriez que le délai d’attente ou la réponse 50X soit valide, mais si vous ne voulez que 404, les documents Nginx l’expliquent ainsi:

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

max_fails = nombre

définit le nombre de tentatives de communication avec le serveur qui ont échoué pendant la durée définie par le paramètre fail_timeout afin de considérer le serveur indisponible pendant une durée également définie par le paramètre fail_timeout. Par défaut, le nombre de tentatives infructueuses est défini sur 1. La valeur zéro désactive la comptabilisation des tentatives.

Voici le kicker:

Ce qui est considéré comme une tentative infructueuse est défini par les directives proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream et memcached_next_upstream.

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream

Syntaxe: erreur proxy_next_upstream | délai d'attente | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ...;

http_404 un serveur a renvoyé une réponse avec le code 404;

Cette réponse à un message similaire pourrait constituer la base de votre configuration:

https://stackoverflow.com/a/12878310/4995465

JayMcTee
la source
Merci pour l'info, je suis toujours perplexe, mais pourriez-vous nous donner un exemple de ce à quoi le fichier de configuration devrait ressembler pour qu'il fonctionne de cette façon, une configuration à la base serait une aide précieuse pour m'aider à comprendre.
user779159
1
Voir ma modification avec un lien vers stackoverflow.com/a/12878310/4995465. Merci de publier votre propre configuration de travail lorsque vous la confirmez pour que les autres puissent en tirer parti, puis acceptez une réponse si vous vous sentez si enclin à le faire.
JayMcTee
0

Oui, vous pouvez augmenter weightd'un serveur dans un groupe en amont et jouer proxy_next_upstreampour inclure ou exclure les codes que vous ne voulez pas basculer. De cette façon, le serveur avec un poids plus important servira la plupart des demandes (la majorité / minorité dépend du montant du poids, mais certaines demandes seront servies par le second de toute façon).

Pourtant, backupest la bonne chose à utiliser. Je ne peux pas imaginer une raison pour ne pas utiliser un serveur contenant toujours toutes les données.

drookie
la source