yukarı akışına ulaşılamadığında nginx site yapılandırmasını yoksay


12

Nginx'imde birden çok site yapılandırması var ve makineyi yeniden başlattığımda, sitelerin yukarı akışına erişilemezse, nginx hiç başlamayacak ve bu sağlıklı site sonuç olarak başlamayacak, nasıl izin verilir nginx bu geçersiz siteleri yok sayıyor mu?

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/*;
}

ve siteler etkin / example1

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;
}
}

ve siteler etkin / example2

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;
}
}

Makineyi yeniden başlattığımda ve şu anda example2.service.example.com çalışmıyor, nginx hiç başlatılmayacak, yani example1.service.example.com kullanılabilir olsa bile, nginx örnek1 için sunulmayacak

===== update "kapalı" açıklaması: Tüm alt alan adları otomatik olarak kendi dns sunucuma kaydedilir / kayıt defteri kaldırılır, bu nedenle sunucu kapalıysa, dns, çözümlemeye çalıştığında böyle bir etki alanına yanıt vermez.


Yapılandırmanızı gösterebilir misiniz?
Tero Kilkanen

@TeroKilkanen ekledi.
cgcgbcbc

@ AD7six evet, yukarı akış çözülemiyor, daha fazla ayrıntı için soru güncellemesine bakın
cgcgbcbc

Nginx'i kötü yapılandırmayla kaybolanlarla başlamaya zorlayabileceğinizi sanmıyorum. DNS'yi kontrol ettiğinizden, belki kısa bir çözümleyici önbellek kullanarak nginx ile geçerli bir sonuç döndürecek şekilde ayarlayın.
AD7six

@ AD7six upstream çevresinde yedekleme olur? Yani, yukarı akışa yedek olarak başka bir ana bilgisayar (her zaman çözülebilir) eklediğimde, normal yukarı akış çözülemediğinde nginx başlatılır mı?
cgcgbcbc

Yanıtlar:


15

Sonunda, yürüyüş yolu bulmak etki alanı insdie konum çalışır çözmek!

misal:

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

Ve nginx http://something.service.lab.mubaşlangıç ​​zamanında çözümlenmeye çalışmaz .


1
Benim için çalışmadı. Bunu yaparken proxy_pass $target;, "502 Bozuk Ağ Geçidi" alıyorum, proxy_pass http://$targetbana "500 Dahili Sunucu Hatası" veriyor. İşte o zaman Nginx aslında ana bilgisayarı çözebilir.
kba

3
@ EmilBurzo'nun eklenmesiyle bu işe yarar.
kba

13

Bu sorunla karşılaşan herkes için @cgcgbcbc doğrudur.

Ama aynı zamanda bir

resolver 8.8.8.8;

yönergesi

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

aksi halde nginx'te aşağıdaki gibi bir hata alırsınız:

no resolver defined to resolve
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.