gefunden Wir haben mehrere Schienen-Anwendungen unter einer gemeinsamen Domäne in Docker, und wir verwenden nginx, um Anforderungen an spezifische Anwendungen.-Setup nginx nicht zum Absturz bringen, wenn Host in Upstream nicht
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Config sieht wie folgt aus:
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...
}
Wenn eine dieser Anwendungen nicht gestartet wird, dann nginx ausfällt und stoppt:
host not found in upstream "bar:3000" in /etc/nginx/conf.d/nginx.conf:6
Wir brauchen sie nicht alle bis zu sein aber nginx schlägt andernfalls fehl. Wie mache ich Nginx ignorieren fehlerhafte Upstreams?
Sie verknüpfen die App-Container mit den Nginx Containern oder laufen sie voneinander trennen? Wenn der Host innerhalb des 'upstream' Blockes nicht löst, zur Laufzeit, dann wird Nginx mit dem obigen Fehler beenden ... – Justin
Wenn Sie eine IP verwenden können, dann wird es Start-up in Ordnung. Würde mit 'resolver' (http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) Arbeit in Ihrem Fall? – Justin
@Justin wir haben jede App in separaten Behältern zu nginx. Verknüpfen Sie sie mit Docker –