Bisakah nginx location
blok cocok dengan string kueri URL?
Misalnya, blok lokasi apa yang mungkin cocok dengan GET
permintaan HTTP
GET /git/sample-repository/info/refs?service=git-receive-pack HTTP/1.1
Bisakah nginx location
blok cocok dengan string kueri URL?
Misalnya, blok lokasi apa yang mungkin cocok dengan GET
permintaan HTTP
GET /git/sample-repository/info/refs?service=git-receive-pack HTTP/1.1
?
)?Jawaban:
Jawaban singkat : Tidak.
Jawaban panjang : Ada solusi jika kita hanya memiliki sedikit blok lokasi seperti itu.
Berikut ini contoh solusi untuk 3 blok lokasi yang harus cocok dengan string kueri tertentu:
Anda dapat menggunakan $ query_string, $ args atau $ arg_fieldname. Semua akan melakukan pekerjaan itu. Anda mungkin tahu lebih banyak tentang error_page di dokumen resmi .
Peringatan: Pastikan untuk tidak menggunakan kode HTTP standar .
sumber
$args ~ "service=git-send-pack"
bukan$args = "service=git-send-pack"
? Formulir ini mengakomodasi beberapa parameter kueri.if
dan$arg_fieldname
, tetapi menggunakanrewrite
alih-aliherror_page
danlocation @name
. Perhatikan bahwa dalam contoh itu, upaya saya dalam menggunakan@name
untuk parameter pengganti direwrite
tidak berhasil.$args ~
dan$arg_somerandomfield =
.map
fitur nginx untuk tujuan ini, yang lebih cepat.query
parameter dengan jalur url yang seperti inifeedback/{auth_key}
alih-alih/feedback?auth_key=abc
. Dengan cara ini saya tidak perlu menggunakanif
, saya dapat menentukan pola lokasi menggunakanregex
dan hanya itu.Saya tahu pertanyaan ini sudah lebih dari setahun, tetapi saya telah menghabiskan beberapa hari terakhir menghancurkan otak saya karena masalah yang sama. Saya ingin berbagai otentikasi dan aturan penanganan untuk repo publik dan pribadi, termasuk mendorong dan menarik. Inilah yang akhirnya saya buat, jadi saya pikir saya akan berbagi. Saya tahu
if
ini adalah arahan yang rumit, tetapi ini tampaknya berhasil bagi saya:sumber