làm cho nginx bỏ qua cấu hình trang web khi không thể truy cập ngược dòng


11

Có nhiều cấu hình trang web trong nginx của tôi và khi tôi khởi động lại máy, nếu không thể truy cập được một trong các trang web, thì nginx sẽ không bắt đầu và kết quả là các trang web lành mạnh đó sẽ không bắt đầu nginx bỏ qua những trang web không hợp lệ?

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

và trang web được kích hoạt / example1 là

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

và trang web được kích hoạt / example2 là

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

Khi tôi khởi động lại máy và tại thời điểm đó example2.service.example.com không hoạt động, nginx sẽ không khởi động, tức là ngay cả example1.service.example.com cũng có sẵn, nginx sẽ không phục vụ cho example1

===== cập nhật Giải thích về "sự cố": Tất cả các tên miền phụ được đăng ký / hủy đăng ký tự động trên máy chủ dns của riêng tôi, vì vậy nếu máy chủ ngừng hoạt động, dns sẽ không phản hồi tên miền đó khi cố gắng giải quyết nó.


Bạn có thể hiển thị cấu hình của bạn?
Tero Kilkanen

@TeroKilkanen đã thêm.
cgcgbcbc

@ AD7six có, ý tôi là ngược dòng không giải quyết được, xem cập nhật câu hỏi để biết thêm chi tiết
cgcgbcbc

Tôi không nghĩ rằng bạn có thể buộc nginx bắt đầu với những gì sôi nổi với cấu hình xấu. Vì bạn kiểm soát DNS, có lẽ thiết lập nó để trả về kết quả hợp lệ với nginx bằng bộ đệm bộ giải quyết ngắn.
AD7six

@ AD7six sẽ sao lưu trong công việc ngược dòng? Ý tôi là nếu tôi đã thêm một máy chủ khác (sẽ luôn có thể phân giải được) ở thượng nguồn dưới dạng bản sao lưu, nginx có khởi động khi dòng ngược thông thường không thể giải quyết không?
cgcgbcbc

Câu trả lời:


14

Cuối cùng tôi tìm ra cách giải quyết, giải quyết vị trí insdie tên miền hoạt động!

thí dụ:

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

Và nginx sẽ không cố gắng giải quyết http://something.service.lab.muvào lúc bắt đầu.


1
Không làm việc cho tôi. Khi thực hiện proxy_pass $target;, tôi nhận được "502 Cổng xấu", proxy_pass http://$targetđưa cho tôi "500 Lỗi máy chủ nội bộ". Đó là khi Nginx trên thực tế có thể giải quyết máy chủ.
kba

3
Với sự bổ sung của @ EmilBurzo, điều này hoạt động.
kba

13

Đối với bất kỳ ai vấp phải vấn đề này, @cgcgbcbc là chính xác.

Nhưng bạn cũng cần thêm một

resolver 8.8.8.8;

chỉ thị trên

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

nếu không, bạn sẽ gặp lỗi trong nginx, như:

no resolver defined to resolve
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.