У нас есть несколько рельсовых приложений под общим доменом в Docker, и мы используем nginx для прямых запросов к конкретным приложениям.Настройка nginx не сбой, если хост в восходящем потоке не найден
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Config выглядит следующим образом:
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...
}
Если один из этих приложений не запускается, то Nginx терпит неудачу и останавливает:
host not found in upstream "bar:3000" in /etc/nginx/conf.d/nginx.conf:6
Нам не нужно их все, чтобы быть до но nginx не работает иначе. Как сделать nginx ignore неудачным вверх по течению?
Вы связывающая приложение контейнеры с контейнерами Nginx, или работает их отдельно друг от друга? Если хост в блоке 'upstream' не будет разрешен, во время выполнения Nginx выйдет с указанной выше ошибкой ... – Justin
Если вы можете использовать IP-адрес, тогда он будет запущен в порядке. Использует ли 'resolver' (http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver) работу в вашем случае? – Justin
@ У нас есть каждое приложение в отдельном контейнере, nginx тоже. Свяжите их с докером. –