এনগিনেক্স সাইট কনফিগারেশন উপেক্ষা যখন এর প্রবাহে পৌঁছানো যায় না


12

আমার এনগিনেক্সে একাধিক সাইট কনফিগার রয়েছে, এবং যখন আমি মেশিনটি পুনরায় চালু করি, সাইটগুলির একটির উজানে পৌঁছাতে না পারলে এনজিনেক্স একেবারেই শুরু হবে না এবং ফলস্বরূপ সেই স্বাস্থ্যকর সাইটটি শুরু হবে না, কীভাবে দেওয়া যায় এই অবৈধ সাইটগুলিকে উপেক্ষা করবেন?

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##

#include /etc/nginx/naxsi_core.rules;

##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##

#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

এবং সাইট-সক্ষম / উদাহরণ 1 হয় is

upstream example1 {
    server example1.service.example.com;
}
server {
listen 80;
server_name example1.com;
location / {
    proxy_pass http://example1/;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
}

এবং সাইটগুলি সক্ষম / উদাহরণ 2

upstream example2 {
    server example2.service.example.com;
}
server {
listen 80;
server_name example2.com;
location / {
    proxy_pass http://example2/;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
}

যখন আমি মেশিনটি পুনরায় চালু করব এবং সেই সময় উদাহরণ 2.service.example.com নিচে থাকবে, এনজিনেক্স মোটেও শুরু হবে না, এমনকি উদাহরণ 1.service.example.com উপলভ্য থাকলেও এনজিনেক্স উদাহরণ 1 এর জন্য পরিবেশন করবে না

===== আপডেট "ডাউন ডাউন" এর ব্যাখ্যা: সমস্ত সাবডোমেনগুলি স্বয়ংক্রিয়ভাবে আমার নিজস্ব ডিএনএস সার্ভারে নিবন্ধিত / নিবন্ধভুক্ত, সুতরাং সার্ভারটি ডাউন থাকলে, সমাধান করার চেষ্টা করার সময় ডিএনএস এ জাতীয় কোনও ডোমেন প্রতিক্রিয়া জানায় না।


আপনি আপনার কনফিগারেশন প্রদর্শন করতে পারেন?
তেরো কিলকানেন

পছন্দ করেছেন
cgcgbcbc

@ এডি 7 সিক্স হ্যাঁ, আমি বোঝাতে চাইছি যে প্রবাহটি সমাধান করে না, আরও তথ্যের জন্য প্রশ্ন আপডেট দেখুন
cgcgbcbc

আমি মনে করি না আপনি খারাপ কনফিগারেশনে যা ফোটে তার সাথে শুরু করতে আপনি এনজিনেক্সকে জোর করতে পারেন। যেহেতু আপনি ডিএনএস নিয়ন্ত্রণ করেন, সম্ভবত একটি সংক্ষিপ্ত সমাধানকারী ক্যাশে ব্যবহার করে এনজিনেক্সের সাথে কোনও বৈধ ফলাফল ফেরত পেতে এটি সেট আপ করুন।
AD7six

@ AD7six চারপাশে প্রবাহের কাজ ব্যাকআপ করবে? আমি বোঝাতে চাইছি যদি আমি ব্যাকআপ হিসাবে আপস্ট্রিমে অন্য হোস্টকে (যা সর্বদা সমাধানযোগ্য হবে) যুক্ত করেছিলাম, যখন স্বাভাবিক উজানটি সমাধান করতে না পারে তখন এনজিনেক্স শুরু হবে?
cgcgbcbc

উত্তর:


15

অবশেষে আমি ওয়াকারআউন্ডটি খুঁজে বের করলাম, ইন্ডি লোকেশন ডোমেনটি সমাধান করুন!

উদাহরণ:

server {
    listen 9000;
    server_name example1.example.com;
    location / {
        set $target http://something.service.lab.mu;
        proxy_pass http://$target;
    }
}

এবং nginx http://something.service.lab.muশুরু সময়ে সমাধান করার চেষ্টা করবে না ।


1
আমার পক্ষে কাজ করেনি। করার সময় proxy_pass $target;, আমি "502 খারাপ গেটওয়ে" পাই, proxy_pass http://$targetআমাকে "500 অভ্যন্তরীণ সার্ভার ত্রুটি" দেয়। এটি তখনই যখন নিমিনেক্স বাস্তবে হোস্টটিকে সমাধান করতে সক্ষম হয়।
কেবা

3
@ এমিলবার্জোর সংযোজন সহ এটি কাজ করে।
কেবা

13

যে কেউ এই সমস্যা নিয়ে হোঁচট খাচ্ছে, @cgcgbcbc সঠিক।

তবে আপনার একটি যুক্ত করা দরকার

resolver 8.8.8.8;

উপরের নির্দেশ

set $target http://something.service.lab.mu;

অন্যথায় আপনি nginx এ ত্রুটি পাবেন, যেমন:

no resolver defined to resolve
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.