Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk mengkonfigurasi lokasi dalam pelayan Nginx
Sintaks
lokasi [=|~|~*|^~] /uri/ {...}
Peraturan
= : Menunjukkan padanan uri yang tepat (pelajar yang berminat boleh melihat perbezaan antara url dan uri)
~: Menunjukkan padanan biasa sensitif huruf besar/kecil
~*: Menunjukkan padanan biasa tidak sensitif huruf besar/kecil
lebih kurang 🎜>
Ujian padanan lokasi hanya menggunakan bahagian uri permintaan, bukan bahagian parameter. (Sebab: Terdapat terlalu banyak cara untuk menulis parameter dan tidak boleh dipadankan dengan tepat)
Tertib pemadanan lokasi
Di bawah premis berbilang konfigurasi lokasi, susunan pemadanan lokasi (tidak disahkan , hey, google Searched above)
2 padanan ^~3 Kemudian lakukan pemadanan biasa mengikut susunan fail konfigurasi,
4 ia ke / untuk pemadanan umum Nota:
Apabila perlawanan berjaya, pemadanan akan dihentikan serta-merta dan permintaan akan diproses mengikut peraturan pemadanan semasa
Contoh demo
fail konfigurasi nginx, dibahagikan kepada tiga jenis dari bawah ke atas Struktur hierarki:
| http menyekat tahap protokol
blok lokasi ialah:
location [=|~|~*|^~|@] pattern { ... }
Ini akan sepadan sepenuhnya dengan corak yang ditentukan dan corak di sini adalah terhad. menjadi rentetan ringkas, yang bermaksud ungkapan biasa tidak boleh digunakan di sini. contoh:
server { server_name jb51.net; location = /abcd { […] } }
Situasi yang sepadan: http://jb51.net/abcd # Padan betul dengan http://jb51.net/abcd # Jika menjalankan nginx The sistem pelayan itu sendiri tidak sensitif huruf besar-besaran, seperti tingkap, maka ia juga sepadan dengan
http://jb51.net/abcd?param1?m2 # Abaikan hujah rentetan pertanyaan, berikut adalah apa yang diikuti oleh /abcd? http://jb51.net/abcd/ # Tiada perlawanan, kerana terdapat garis miring di hujungnya, nginx tidak menganggap situasi ini sebagai perlawanan yang lengkap
http://jb51.net /abcde # Tidak sepadan, kerana ia bukan padanan lengkap
2 (tiada)
Anda tidak boleh menulis pengubah lokasi, nginx masih boleh memadankan corak. Dalam kes ini, padankan uri tersebut bermula dengan corak yang ditentukan Ambil perhatian bahawa uri di sini hanya boleh menjadi rentetan biasa dan ungkapan biasa tidak boleh digunakan.
contoh:
server { server_name website.com; location /abcd { […] } }Situasi yang sepadan:
http://jb51.net/abcd # Padan betul dengan http://jb51.net/abcd # Jika menjalankan nginx The sistem pelayan itu sendiri tidak sensitif huruf besar-besaran, seperti tingkap, maka ia juga sepadan dengan
http://jb51.net/abcd?param1?m2 # Abaikan hujah rentetan pertanyaan, berikut ialah /abcd param1?m2? http://jb51.net/abcd/ # Garis miring mengekor di hujung juga berada dalam julat padanan
http://jb51.net/abcde # Masih padan, kerana uri adalah
bermula dengan corak 3. ~
Pengubah suai lokasi ini sensitif huruf besar dan kecil dan corak mestilah ungkapan biasa
example: server { server_name jb51.net; location ~ ^/abcd$ { […] } }
http://jb51.net/abcd # Tiada padanan, ~ adalah sensitif huruf besar/kecil http://jb51.net/abcd ?param1?m2 # Abaikan pertanyaan hujah rentetan, berikut ialah ?param1?m2
selepas /abcd http://jb51.net/abcd/ # Tidak padan kerana terdapat garis miring ke belakang pada penghujung (garis miring di belakang), tidak sepadan dengan ungkapan biasa^/ abcd$ http://jb51.net/abcde #Tidak sepadan dengan ungkapan biasa^/abcd$
Nota: Untuk sesetengah sistem yang tidak sensitif huruf besar-besaran, Contohnya, dalam tingkap, ~ dan ~* tidak berfungsi. Ini disebabkan terutamanya oleh sistem pengendalian.
4. ~*
与 ~ 类似,但这个 location modifier 不区分大小写,pattern 须是正则表达式
example:
server { server_name website.com; location ~* ^/abcd$ { […] } }
匹配情况:
http://jb51.net/abcd # 完全匹配
http://jb51.net/abcd # 匹配,这就是它不区分大小写的特性
http://jb51.net/abcd?param1?m2 # 忽略查询串参数(query string arguments),这里就是 /abcd 后面的 ?param1?m2
http://jb51.net/abcd/ # 不匹配,因为末尾存在反斜杠(trailing slash),并不匹配正则表达式 ^/abcd$
http://jb51.net/abcde # 不匹配正则表达式 ^/abcd$
5. ^~
匹配情况类似 2. (none) 的情况,以指定匹配模式开头的 uri 被匹配,不同的是,一旦匹配成功,那么 nginx 就停止去寻找其他的 location 块进行匹配了(与 location 匹配顺序有关)
6. @
用于定义一个 location 块,且该块不能被外部 client 所访问,只能被 nginx 内部配置指令所访问,比如 try_files or error_page
演示实例
产生的效果如下:
访问根目录/,匹配到location /
访问除hello.php之外的其它php程序,匹配到location ~ \.php$,并且用php5-fpm去运行
访问hello.php,匹配到location = /hello.php,访问被重定向到好联系官网
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi lokasi dalam pelayan Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!