Bagaimana cara menetapkan host default untuk nginx?


11

Saya mencoba mencari cara mengatur host default untuk instalasi nginx saya. Saya menemukan artikel ini di nginx Wiki:

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

Sayangnya, ini tidak berhasil. Setelah restart saya mendapatkan ini:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

Setelah menghapus arahan http saya mendapatkan ini:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

Saya di Ubuntu 10.04.3 di mana saya menggunakan PPA nginx resmi. Versi 1.0.9 dari nginx sedang berjalan.

Jawaban:


16

Konfigurasi Nginx didasarkan pada serangkaian blok bersarang. Seharusnya hanya ada satu blok http. Ini biasanya didefinisikan dalam /etc/nginx/nginx.conf - semua file yang disertakan (misalnya dari situs yang tersedia) dimasukkan ke dalam blok http ini. Untuk mengatur host default / catch-all, Anda hanya perlu bagian blok server untuk host default Anda. Ini dilakukan dengan menambahkan 'default' ke directive listening. Selain itu, adalah umum untuk menggunakan nama_server yang tidak cocok dengan nama asli - biasanya garis bawah ("_"), tetapi karakter lain juga dapat diterima. Jika Anda menghilangkan parameter default, blok server pertama diperlakukan sebagai default. (Lihat panduan nginx ke server_names untuk informasi lebih lanjut)

Konfigurasi nginx default ('asli' dalam konteks ini) dapat mencakup blok server default (catch-all) di nginx.conf yang dapat Anda konfigurasi.

Sedangkan untuk kesalahan kedua, pastikan bahwa 'main' didefinisikan dalam nginx.conf (sebuah baris harus dimulai dengan 'log_format main ...' (dan, tentu saja, periksa tanda kurung Anda). Anda dapat menghilangkan seluruh baris 'access_log' sepenuhnya jika Anda tidak ingin permintaan ke server default Anda dicatat (atau dapat mengubah format dengan mendefinisikan format baru).


Itu cepat. Terima kasih. Akan coba ini besok setelah tidur sedikit ;-).
Ulf Klose

Menggunakan _ sebagai server_name tidak menambah "defaultness" dari server {}, itu hanya biasa digunakan untuk menjaga catchall dari bentrok dengan blok server lain, jadi tidak ada 'timpa' tentang flag default pada directive listen. Ini satu-satunya hal yang secara eksplisit menandai server sebagai default. Tetap saja, +1
kolbyjack

@ Kolbyjack - Terima kasih atas koreksi - Saya akan memperbaikinya dalam jawaban saya.
cyberx86

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.