Abbiamo diverse app di rotaia con dominio comune in Docker e usiamo nginx per indirizzare le richieste ad app specifiche.Setup nginx di non arrestarsi in modo anomalo se non è stato trovato l'host in upstream
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Config assomiglia a questo:
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...
}
Se una di queste applicazioni non si avvia quindi nginx fallisce e si ferma:
host not found in upstream "bar:3000" in /etc/nginx/conf.d/nginx.conf:6
Non abbiamo bisogno di tutti loro di essere all'altezza ma nginx fallisce altrimenti. Come fare in modo che nginx ignori gli upstream falliti?
Stai collegano i contenitori app con i contenitori Nginx, o in esecuzione li separano gli uni dagli altri? Se l'host all'interno del blocco 'upstream' non si risolve, in fase di esecuzione, Nginx uscirà con l'errore sopra riportato ... – Justin
Se è possibile utilizzare un indirizzo IP, verrà avviato correttamente. L'uso di 'resolver' (http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) funzionerà nel tuo caso? – Justin
@Justin abbiamo ogni app in un contenitore separato, anche nginx. Collegali con la finestra mobile –