Pengaturan Nginx untuk menangkap semua vhost yang tidak ditangani


41

Jika saya sudah memiliki banyak virtualhost, bagaimana saya bisa membuat virtual host untuk menangani permintaan yang tidak cocok dengan virtualhost? (mis. akses oleh IP, domain lain yang menghubungkan ke IP, .etc .etc)

Jawaban:


52

nama server _; dan default_server pada konfigurasi mendengarkan adalah apa yang Anda cari.

Contoh:

server {

   listen 80 default_server;
   server_name _;

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

}

1
Dan untuk kasus https:listen 443 ssl default_server;
James T Snell

Ketika saya mengaktifkan ini, saya owncloud 9tidak akan merespons. Mengapa? Owncloud VHOST memiliki nama_server dan tidak ada default_server.
Corni

Saya tidak menggunakan 80hanya 443 yang terbuka.
Corni

Jika saya menambahkan ini, snippet config saya yang lain di / etc / nginx / sites-enabled / diabaikan. semua domain masuk ke /var/www/defaultdalam hal ini. Bagaimana saya harus memesan cuplikan?
rubo77

Saya dapat membuat koneksi vhos ke postgresql?
Erlon Charles

4

Jika Anda menggunakan SSL, maka Anda memerlukan beberapa saluran tambahan untuk default_server - sertifikat dan kunci (yang dapat ditandatangani sendiri).

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 akan mencoba menerima koneksi SSL pada default_server IP / port-matching. Jika server tersebut tidak ada sertifikat / kunci, nginx akan memutuskan koneksi Itu tidak akan mencoba server lain. Jadi jangan lupa sertifikat / kunci.


Catatan penting tentang sertifikat SSL! Jika sertifikat hilang, seluruh server nginx tidak akan berjalan (meskipun nginx -tmengatakan "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;
}

Entri masing-masing adalah untuk port 80 (HTTP), port 443 (HTTPS), port 80 IPv6, dan port 443 IPv6.

Anda dapat mempertimbangkan log_not_found off;untuk menambahkan untuk menghindari menambahkan entri log untuk halaman yang tidak ditemukan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.