J'ai un proxy inverse nginx qui procède aux requêtes d'un ELB amazon externe aux ELB internes.
J'ai 6 instances d'arrière-plan qui traitent les demandes. Les configurations activées par le site ressemblent à ceci, mais il existe différents numéros de port et proxy_pass. Tout le reste est identique:
server {
listen 3000;
location / {
proxy_pass http://internal-prod732r8-PrivateE-1GJ070M0745TT-348518554.eu-west-1.elb.amazonaws.com:3000;
include /etc/nginx/proxy.conf;
}
}
Toutes les 24 heures environ, l'une des configurations cesse de fonctionner. Tous les autres proxys fonctionnent bien. Si je redémarre nginx, toutes les configurations fonctionnent à nouveau. Il n'y a rien dans error.log, rien de bizarre dans le journal d'accès, syslog ou dmesg.
Est-ce quelque chose de connu? Ai-je fait quelque chose de mal avec mes configurations de proxy? Y a-t-il d'autres journaux dans lesquels je peux regarder?
nginx
reverse-proxy
user202172
la source
la source
Réponses:
La réponse à cette question est que les ELB changent parfois les adresses IP et que nginx résout le nom lors du démarrage.
Pour résoudre ce problème, il y a toujours un serveur DNS dans votre VPC à 0,2. Donc, si l'IP CIDR local est 10.0.0.0/16, le serveur DNS est à 10.0.0.2.
Ajoutez ceci à la configuration nginx.
Le proxy_pass doit également être défini comme une variable, sinon nginx ne le résoudra qu'une seule fois. Donc, basé sur la configuration ci-dessus, c'est la bonne configuration:
la source
Si votre proxy_pass n'est pas passé directement à une URL comme le montre votre exemple ( http://amazonaws.com ), mais plutôt à une batterie de serveurs proxy en amont, comme ceci:
Dans ce cas, vous serez moins préoccupé par la défaillance temporaire d'un des amonts. Parce qu'ils feront tous le même travail. Si l'un ne répond pas, le suivant sera mandaté pour cette réponse. Tranquillité d'esprit.
Nginx sautera automatiquement une machine en panne pendant x secondes. Jusqu'à ce que vous le répariez ou jusqu'à ce qu'il revienne de lui-même. ( http://wiki.nginx.org/HttpUpstreamModule )
Quelle que soit la raison de vos interruptions, en les distribuant sur une batterie en amont, cela se transforme en une configuration plus facile.
la source