Đặt Nginx để bắt tất cả các vhost chưa xử lý


41

Nếu tôi đã có một loạt các máy chủ ảo, làm thế nào tôi có thể tạo một máy chủ ảo để xử lý các yêu cầu không khớp với bất kỳ máy chủ ảo nào? (tức là truy cập bằng IP, một tên miền khác liên kết đến IP, .etc .etc)

Câu trả lời:


52

tên máy chủ _; và default_server trên cấu hình nghe là những gì bạn đang tìm kiếm.

Thí dụ:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}

1
Và đối với trường hợp https:listen 443 ssl default_server;
James T Snell

Khi tôi kích hoạt tính năng này, tôi owncloud 9sẽ không trả lời. Tại sao? Owncloud VHOST có server_name và không có default_server.
Corni

Tôi không sử dụng 80chỉ 443 là mở.
Corni

Nếu tôi thêm phần này, các đoạn cấu hình khác của tôi trong / etc / nginx / sites-enable / sẽ bị bỏ qua. tất cả các tên miền đi /var/www/defaulttrong trường hợp này. Làm thế nào để tôi phải đặt hàng các đoạn?
rubo77

Tôi có thể tạo một kết nối vhos để postgresql?
Erlon Charles

4

Nếu bạn sử dụng SSL, thì bạn cần thêm một số hệ thống ống nước cho default_server - chứng chỉ và khóa (có thể tự ký).

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

Nginx sẽ cố gắng chấp nhận kết nối SSL trên máy chủ default_server khớp IP / cổng. Nếu máy chủ đó bị thiếu cert / key, nginx sẽ ngắt kết nối. Nó sẽ không thử các máy chủ khác. Vì vậy, đừng quên cert / key.


Lưu ý quan trọng về chứng chỉ SSL! Nếu chứng chỉ bị thiếu, toàn bộ máy chủ nginx sẽ không chạy (mặc dù nginx -tnói "ok")
Philipp

3
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

Các mục nhập lần lượt dành cho cổng 80 (HTTP), cổng 443 (HTTPS), cổng 80 IPv6 và cổng 443 IPv6.

Bạn có thể xem xét thêm log_not_found off;để tránh thêm mục nhật ký cho trang không được tìm thấy.

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.