हमारे पास डॉकर में आम डोमेन के अंतर्गत कई रेल एप्लिकेशन हैं, और हम विशिष्ट एप्लिकेशन के लिए सीधे अनुरोधों के लिए nginx का उपयोग करते हैं।
our_dev_server.com/foo # proxies to foo app
our_dev_server.com/bar # proxies to bar
कॉन्फ़िगरेशन इस तरह दिखता है:
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
हमें उन सभी की ज़रूरत नहीं है लेकिन नगनेक्स अन्यथा विफल हो जाते हैं। नंगेक्स को कैसे करें नजरअंदाज फेल अपस्ट्रीम?
resolver
( nginx.org/en/docs/http/ngx_http_core_module.html#resolver ) काम कर रहा है?
proxy.sh
स्क्रिप्ट शामिल है जो पर्यावरण चर पढ़ता है और गतिशील रूप से upstream
प्रत्येक के लिए प्रविष्टियां जोड़ता है , फिर Nginx शुरू करता है। यह उस समय बहुत अच्छा काम करता है जब हम अपने प्रॉक्सी कंटेनर चलाते हैं, हम रनटाइम के दौरान आवश्यक अपस्ट्रीम में पास हो सकते हैं। आप लॉन्च के समय कुछ अपस्ट्रीम को सक्षम / अक्षम करने के लिए कुछ ऐसा ही कर सकते थे (या मेरे सेटअप की तरह रनटाइम के दौरान ज़रूरी
upstream
ब्लॉक के भीतर मेजबान रनटाइम पर हल नहीं करता है, तो निगनेक्स उपरोक्त त्रुटि के साथ बाहर निकल जाएगा ...