Nginx ne démarre pas avec l'hôte introuvable en amont

J'utilise nginx proxy et de tenir les connexions persistantes aux serveurs lointains pour moi.

J'ai configuré environ 15 blocs de semblable à cet exemple:

upstream rinu-test {
    server test.rinu.test:443;
    keepalive 20;
}
server {
    listen 80;
    server_name test.rinu.test;
    location /{
        proxy_pass https://rinu-test;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header Host $http_host;
    }
}

Le problème est que si le nom d'hôte ne peut pas être résolu dans un ou plusieurs des upstream blocs, nginx ne (re)commencer. Je ne peux pas utiliser des adresses ip statiques, soit, certains de ces hôtes explicitement dit de ne pas le faire parce que les IPs va changer. Toutes les autres solutions que j'ai vu ce message d'erreur dit de se débarrasser de upstream et tout faire dans le location bloc. Qu'il pas possible ici, car keepalive est uniquement disponible sous upstream.

Je peut temporairement se permettre de perdre un serveur, mais pas tous 15.

Edit:
S'avère nginx n'est pas adapté pour ce cas d'utilisation. Une alternative backend (en amont) de la directive keepalive proxy doit être utilisé. Une coutume Node.js l'alternative est dans ma réponse. Jusqu'à présent, je n'ai pas trouvé d'autres alternatives qui fonctionnent réellement.

  • Il y a deux choses que vous pouvez essayer. Changement proxy_pass https://rinu-test; à proxy_pass $proxyurl; et avant que vous pouvez définir la variable set $proxyurl $scheme://$host$request_uri Et la prochaine est d'essayer d'utiliser la variable dans l'amont, je n'ai pas testé la 2ème option et ne peut pas vérifier encore. Mais l'utilisation d'une variable dans proxy_pass désactive la mise en cache dns dans nginx
  • L'utilisation de proxy sans l'amont est inutile. Les Variables ne peuvent pas être utilisés en amont.
  • Je voulais vous pourriez essayer quelque chose comme proxy_pass https://rinu-test$request_uri;
  • Comment explorer HAProxy au lieu de nginx pour cela? Si vous utilisez des amonts ensuite ce cas d'utilisation ne peuvent pas être manipulés par défaut
  • J'ai essayé de HAProxy mais il ne fonctionne pas. Il n'proxy, mais n'a pas garder les connexions ouvertes ou a omis de les réutiliser.
  • Il devrait avoir keep-alive activé par défaut? stackoverflow.com/questions/46966813/...
  • C'est la théorie, oui, mais je suppose que cela ne fonctionne que sur le frontal de côté. Mon test a clairement montré qu'il ne fonctionne pas sur le backend de côté. J'ai essayé toutes les options, a passé 4 heures sur elle.

InformationsquelleAutor rinu | 2018-05-09