Comment prévenir le conflit d'étranglement nginx Avec mode de service?
Nous utilisons
http://wiki.nginx.org/HttpLimitReqModule
nginx Réguler la vitesse et constaté qu'il est conflit avec notre "
Mode de Maintenance
"Parce que les deux composants utilisent
http://www.w3.org/Protocols/rf ... .html
.
Quand l'étranglement est activé (de l'autre côté
http://wiki.nginx.org/HttpLimitReqModule
Directif), nginx Sert habituellement 503, Mais malheureusement, notre emplacement de mode de maintenance est utilisé, ce qui conduit à 302 Sur notre page de service posté sur Amazon S3.
302 Pour demande réglable - Pas le meilleur résultat
.
Je me demandais comment d'autres personnes résolvent ce problème? Devrais-je, par exemple, utiliser un autre code d'état pour notre page de service, mais si oui, quoi?
Idéalement, pour les demandes réglementées, je ne veux pas servir une page, seul un en-tête de réponse 503 - Il doit être plus facile que possible, car tout le point est d'empêcher la surcharge du serveur.
Pour référence, il s'agit d'une configuration. nginx, Que nous utilisons pour le "mode de service":
http://wiki.nginx.org/HttpLimitReqModule
nginx Réguler la vitesse et constaté qu'il est conflit avec notre "
Mode de Maintenance
"Parce que les deux composants utilisent
http://www.w3.org/Protocols/rf ... .html
.
Quand l'étranglement est activé (de l'autre côté
http://wiki.nginx.org/HttpLimitReqModule
Directif), nginx Sert habituellement 503, Mais malheureusement, notre emplacement de mode de maintenance est utilisé, ce qui conduit à 302 Sur notre page de service posté sur Amazon S3.
302 Pour demande réglable - Pas le meilleur résultat
.
Je me demandais comment d'autres personnes résolvent ce problème? Devrais-je, par exemple, utiliser un autre code d'état pour notre page de service, mais si oui, quoi?
Idéalement, pour les demandes réglementées, je ne veux pas servir une page, seul un en-tête de réponse 503 - Il doit être plus facile que possible, car tout le point est d'empêcher la surcharge du serveur.
Pour référence, il s'agit d'une configuration. nginx, Que nous utilisons pour le "mode de service":
server {
...
# Redirect processing of 503 error pages into a named location:
error_page 503 @maintenance;
# "Maintenance Mode" is off by default - Use a nginx variable to track state.
set $maintenance off;
# Switch on "Maintenance Mode" if a certain file exists.
if (-f /var/www/mysite/shared/maintenanceON) {
set $maintenance on;
}
if ($maintenance = on) {
return 503; # 503 - Service unavailable
}
location @maintenance {
# Redirect the request to our maintenance page in Amazon S3.
rewrite ^(.*)$ [url=http://mysite.s3-website-us-east-1.amazonaws.com/]http://mysite.s3-website-us-east-1.amazonaws.com/[/url] break;
}
...
# Process the php files - pass to php-fpm.
location ~ \.php {
# Limit aggressive bots and crawlers to 30 requests per minute.
limit_req zone=bots;
fastcgi_pass 127.0.0.1:$fastcgi_port;
}
...
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
2 réponses
Dominique
Confirmation de:
Comment pouvons-nous voir clairement, les utilisateurs ne reçoivent pas vraiment 503, Lorsque vous utilisez toujours le "mode de maintenance", il n'y a donc aucune utilisation à partir de ce code d'état dans votre configuration. Venir avec un autre code (593?) Et utilisez-le.
Ou même mieux Miss Extra
Et juste envoyer
Directement s'il y a un fichier de service.
Alice
Confirmation de:
http://nginx.org/en/docs/http/ ... tatus
"Directive qui vous permet de spécifier le code de réponse HTTP, qui retournera le régulateur.
http statut 429 moyens "
"- Ce code a été adopté dans
http://tools.ietf.org/html/rfc6585#page-3
Codes d'état supplémentaires HTTP
. Utilisé, par exemple, sur
https://dev.twitter.com/docs/rate-limiting/1.1
.
(
https://serverfault.com/a/554748/21415
fonctionne aussi parce que dans ma configuration 503 Utilisé uniquement à l'intérieur nginx).