Nous avons plusieurs applications de rails sous domaine commun dans Docker, et nous utilisons nginx pour diriger les demandes vers des applications spécifiques.Configuration nginx ne pas se bloquer si l'hôte en amont n'est pas trouvé
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Config ressemble à ceci:
upstream foo {
server foo:3000;
}
upstream bar {
server bar:3000;
}
# and about 10 more...
server {
listen *:80 default_server;
server_name our_dev_server.com;
location /foo {
# this is specific to asset management in rails dev
rewrite ^/foo/assets(/.*)$ /assets/$1 break;
rewrite ^/foo(/.*)$ /foo/$1 break;
proxy_pass http://foo;
}
location /bar {
rewrite ^/bar/assets(/.*)$ /assets/$1 break;
rewrite ^/bar(/.*)$ /bar/$1 break;
proxy_pass http://bar;
}
# and about 10 more...
}
Si l'une de ces applications n'est pas démarré alors nginx échoue et arrête:
host not found in upstream "bar:3000" in /etc/nginx/conf.d/nginx.conf:6
Nous ne les avons pas besoin de les être en place mais nginx échoue autrement. Comment faire pour que nginx ignore les flux ascendants échoués?
Êtes-vous liez les conteneurs d'applications avec les conteneurs Nginx, ou les exécuter séparés les uns des autres? Si l'hôte dans le bloc 'upstream' ne se résout pas, au moment de l'exécution, alors Nginx va sortir avec l'erreur ci-dessus ... – Justin
Si vous pouvez utiliser une adresse IP alors il va démarrer très bien. L'utilisation de 'resolver' (http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) fonctionnerait-elle dans votre cas? – Justin
@Justin nous avons chaque application dans un conteneur séparé, nginx aussi. Reliez-les avec docker –