mulai dari versi 1.9.2 Anda dapat melakukan:
nginx -T
tampilkan konfigurasi nginx lengkap
nginx -T | grep "server_name " #include the whitespace to exclude non relevant results
menampilkan semua nama server
grep server_name /etc/nginx/* -RiI
Saya lebih cepat mengetik daripada jawaban @ Haubix. Tambahkan |grep -v "#"
opsional
Perbarui: Terima kasih kepada @Putnik karena telah menunjukkan cara yang lebih mudah (namun saya lebih suka hanya mencantumkan situs yang diaktifkan):
grep server_name /etc/nginx/sites-enabled/* -RiI
Pos Lama:
Coba sesuatu seperti ini:
find /etc/nginx/sites-enabled/ -type f -print0 | xargs -0 egrep '^(\s|\t)*server_name'
Semoga itu bisa membantu!
Jawaban sejauh ini akan berhasil, kecuali jika Anda memiliki server_name
arahan berjalan di beberapa baris, maka itu akan gagal secara diam-diam. Mereka juga tampaknya ditulis untuk konsumsi manusia (mengambil baris tambahan seperti server_name_in_redirect off;
) sehingga Anda tidak dapat memasukkannya ke dalam skrip.
Saya memiliki banyak host virtual, dan ingin menggunakan hasilnya dalam sebuah skrip (sigh ), jadi inilah sesuatu yang lebih panjang, tetapi harus cukup kuat untuk tujuan itu:
nginx -T | sed -r -e 's/[ \t]*$//' -e 's/^[ \t]*//' -e 's/^#.*$//' -e 's/[ \t]*#.*$//' -e '/^$/d' | \
sed -e ':a;N;$!ba;s/\([^;\{\}]\)\n/\1 /g' | \
grep -P 'server_name[ \t]' | grep -v '\$' | grep '\.' | \
sed -r -e 's/(\S)[ \t]+(\S)/\1\n\2/g' -e 's/[\t ]//g' -e 's/;//' -e 's/server_name//' | \
sort | uniq | xargs -L1
Karena panjang dan \
-y, saya akan menyertakan penjelasan singkat untuk setiap baris.
- Dapatkan nginx untuk mencetak seluruh konfigurasinya (sehingga kita tidak perlu khawatir tentang file mana yang akan disertakan) dan bersihkan:hapus spasi awal dan akhir, komentar (termasuk yang akhir) dan baris kosong.
- Setiap baris yang tidak diakhiri dengan titik koma atau kurung kurawal harus dilanjutkan, jadi kami mengganti
\n
tanpa;
sebelumnya ,{
atau}
dengan spasi. Ini perlu menggunakan:a;N;$!ba;
sed yang aneh ambil trik seluruh file, dan beberapa pengelompokan sehingga kita dapat mengembalikan karakter terakhir dengan\1
, ditambah banyak garis miring terbalik untuk keberuntungan. - Sekarang kita dapat menarik setiap
server_name
baris, dengan beberapa pemeriksaan tambahan untuk menghapus variabel nginx ($foo
) dan hanya menyertakan domain yang valid (bukanlocalhost
dan_
). - Setiap tab/spasi di antara kata diubah menjadi carriage return, lalu kami menghapus spasi berlebih (untuk berjaga-jaga), titik koma, dan
server_name
bagian. - Akhirnya urutkan, uniqify dan gunakan
xargs -L1
untuk menghapus satu baris kosong di bagian atas.
Perhatikan bahwa ada beberapa bit di sini yang secara teknis menggandakan, tapi saya ingin menjadi sejelas dan sekuat mungkin. Namun, saran untuk perbaikan diterima.