Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk mengkonfigurasi lokasi dalam pelayan Nginx

Bagaimana untuk mengkonfigurasi lokasi dalam pelayan Nginx

WBOY
WBOYke hadapan
2023-05-14 19:16:123557semak imbas

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)

1 Perlawanan pertama =

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

| >nginx membenarkan pengguna mentakrifkan blok lokasi dan menentukan corak (corak) padanan padanan uri tertentu. Selain rentetan ringkas (seperti laluan sistem fail), corak padanan yang lebih kompleks juga dibenarkan. Bentuk sintaks asas

blok lokasi ialah:

  location [=|~|~*|^~|@] pattern { ... }

[=|~|~*|^~|@] dipanggil pengubah suai lokasi, yang akan menentukan cara nginx sepadan dengan corak berikut , dan atribut paling asas corak (rentetan ringkas atau ungkapan biasa).

Mengenai pengubah suai lokasi



1 =

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$ {
  […]
  }
}

situasi sepadan:

http: //jb51.net/abcd # Padanan tepat

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

演示实例

Bagaimana untuk mengkonfigurasi lokasi dalam pelayan Nginx

产生的效果如下:
访问根目录/,匹配到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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam