Dockerの共通ドメインにいくつかのRailsアプリケーションがあり、nginxを使用して特定のアプリケーションにリクエストを送ります。アップストリームのホストが見つからない場合、nginxがクラッシュしないように設定する
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
Configが次のようになります。
これらのアプリケーションのいずれかが、その後開始されていないnginxのに失敗し、停止した場合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...
}
:私たちはアップするすべてのそれらを必要としない
host not found in upstream "bar:3000" in /etc/nginx/conf.d/nginx.conf:6
そうでなければnginxは失敗します。 nginxで失敗したアップストリームを無視する方法
あなたはnginxのコンテナとアプリのコンテナをリンク、またはそれらが互いに離れる実行していますか?実行時に、 'upstream'ブロック内のホストが解決しない場合、Nginxは上記のエラーで終了します... – Justin
IPを使用することができれば、それはうまく起動します。あなたのケースでは 'resolver'(http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver)を使用しますか? – Justin
@ジャスティン私たちは別の容器、nginxにも各アプリを持っています。ドッカーとリンクしてください –