ডকারে আমাদের সাধারণ ডোমেনের অধীনে বেশ কয়েকটি রেল অ্যাপ রয়েছে এবং নির্দিষ্ট অ্যাপ্লিকেশনগুলিতে সরাসরি অনুরোধের জন্য আমরা এনজিএনএক্স ব্যবহার করি।
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...
}
যদি এই অ্যাপগুলির মধ্যে একটি চালু না হয় তবে এনজিনেক্স ব্যর্থ হয়ে থামবে:
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
প্রতিটিটির জন্য গতিশীলভাবে এন্ট্রি যুক্ত করে, তারপরে এনগিনেক্স শুরু হয়। এটি এতে দুর্দান্ত কাজ করে যখন আমরা আমাদের প্রক্সি ধারকটি চালাই আমরা রানটাইমের সময় প্রয়োজনীয় প্রবাহগুলিতে যেতে পারি। প্রবর্তনের সময় নির্দিষ্ট প্রবাহগুলি সক্ষম / অক্ষম করার জন্য আপনি অনুরূপ কিছু করতে পারেন (বা আমার সেটআপ যেমন রানটাইমের সময় প্রয়োজনীয়গুলি যোগ করুন)
upstream
ব্লকের মধ্যে থাকা হোস্টটি রানটাইমের সময় সমাধান না করে তবে Nginx উপরের ত্রুটিটি দিয়ে প্রস্থান করবে ...