Bagaimana saya bisa memiliki aturan yang sama untuk dua lokasi di konfigurasi NGINX?
Saya sudah mencoba yang berikut ini
server {
location /first/location/ | /second/location/ {
..
..
}
}
tetapi nginx reload melemparkan kesalahan ini:
nginx: [emerg] invalid number of arguments in "location" directive**
nginx
nginx-location
pengguna1661010
sumber
sumber
nginx/1.13.2
proxy_pass
bekerja, lihat jawaban ini: stackoverflow.com/a/46625656/1246870Pilihan lain adalah mengulang aturan di dua lokasi awalan menggunakan file yang disertakan. Karena lokasi awalan adalah posisi independen dalam konfigurasi, menggunakannya dapat menyimpan beberapa kebingungan saat Anda menambahkan lokasi regex lain di kemudian hari. Menghindari lokasi regex saat Anda dapat membantu skala konfigurasi Anda dengan lancar.
Berikut ini contoh shared.conf:
sumber
shared.conf
contoh dan lokasi?Baik regex dan file yang disertakan adalah metode yang baik, dan saya sering menggunakannya. Tetapi alternatif lain adalah dengan menggunakan "nama lokasi", yang merupakan pendekatan yang berguna dalam banyak situasi - terutama yang lebih rumit. Halaman resmi "If is Evil" pada dasarnya menunjukkan hal berikut sebagai cara yang baik untuk melakukan sesuatu:
Ada keuntungan dan kerugian dari berbagai pendekatan ini. Satu keuntungan besar bagi regex adalah Anda dapat menangkap bagian dari pertandingan dan menggunakannya untuk mengubah respons. Tentu saja, Anda biasanya dapat mencapai hasil yang serupa dengan pendekatan lain dengan mengatur variabel di blok asli atau menggunakan
map
. Kelemahan dari pendekatan regex adalah bisa menjadi berat jika Anda ingin mencocokkan berbagai lokasi, ditambah rendahnya prioritas regex mungkin tidak cocok dengan bagaimana Anda ingin mencocokkan lokasi - belum lagi bahwa tampaknya ada dampak kinerja dari regex dalam beberapa kasus.Keuntungan utama dari memasukkan file (sejauh yang saya tahu) adalah sedikit lebih fleksibel tentang apa yang dapat Anda sertakan - misalnya, tidak harus berupa blok lokasi penuh. Tapi itu juga hanya sedikit lebih klakson daripada lokasi yang disebutkan.
Perhatikan juga bahwa ada solusi terkait yang mungkin dapat Anda gunakan dalam situasi serupa: lokasi bersarang. Idenya adalah Anda akan mulai dengan lokasi yang sangat umum, menerapkan beberapa konfigurasi yang umum untuk beberapa kecocokan yang mungkin, dan kemudian memiliki lokasi bersarang terpisah untuk berbagai jenis jalur yang ingin Anda cocokkan. Misalnya, mungkin berguna untuk melakukan sesuatu seperti ini:
sumber
Ini adalah pendekatan yang singkat, namun efisien dan terbukti:
location ~ (patternOne|patternTwo){ #rules etc. }
Jadi seseorang dapat dengan mudah memiliki beberapa pola dengan sintaksis pipa sederhana yang menunjuk ke blok / aturan lokasi yang sama.
sumber