Apakah logik padanan Pelayan dan Lokasi dalam Nginx?

WBOY
Lepaskan: 2023-05-12 11:10:25
ke hadapan
1715 orang telah melayarinya

Logik pemadanan pelayan

Apabila nginx memutuskan blok pelayan mana untuk melaksanakan permintaan, ia tertumpu terutamanya pada medan listen dan server_name dalam blok pelayan

arahan dengar

Medan dengar mentakrifkan IP dan port respons pelayan Jika medan dengar tidak dikonfigurasikan secara eksplisit, pendengaran lalai ialah 0.0.0.0:80 (root) atau. 0.0.0.0:8080 (Bukan akar)

dengar boleh dikonfigurasikan sebagai:

  1. Gabungan ip dan port

  2. Satu ip , dengar port 80 secara lalai

  3. Satu port, dengar semua antara muka ip secara lalai

  4. soket unix laluan

Item terakhir biasanya hanya digunakan untuk menghantar permintaan antara pelayan yang berbeza

Peraturan untuk memilih pelayan untuk digunakan adalah seperti berikut:

  1. nginx Mula-mula, tukar semua arahan dengar yang "tidak lengkap", seperti arahan tanpa medan dengar untuk mendengar 0.0.0.0:80, dengar 1.1.1.1 untuk mendengar 1.1.1.1:80, dsb.

  2. nginx mencipta senarai blok pelayan yang paling sepadan dengan permintaan berdasarkan IP dan port yang diminta Ia mula-mula sepadan dengan blok pelayan yang menentukan IP tertentu, dan kemudian pilih blok pelayan yang mendengar 0.0. .0.0. Tetapi tidak kira apa keadaannya, , port mestilah padanan yang tepat

  3. Jika terdapat hanya satu perlawanan terbaik, maka blok pelayan yang sepadan akan digunakan untuk bertindak balas kepada permintaan, jika tidak, arahan nama pelayan bagi setiap blok pelayan akan dinilai

Sekali lagi, arahan nama_server hanya akan dinilai apabila arahan dengar tidak dapat mencari padanan terbaik 🎜>Sebagai contoh, kami menganggap bahawa nama domain example.com menghala ke 192.168.0.1, dan nginx terletak pada 192.168.0.1 mempunyai dan hanya dua blok pelayan berikut:

# server block 1server {
  listen 192.168.0.1;
  server_name other.com
  ...
}

# server block 2server {
  listen 80;
  server_name example.com
  ...
}
Salin selepas log masuk

perintah nama_pelayan

Jika padanan terbaik tidak boleh diperolehi mengikut arahan dengar, ia akan Mula menghuraikan arahan nama_server nginx akan menyemak pengepala "hos" dalam permintaan ini klien sebenarnya cuba meminta nginx akan memadankan arahan nama_server berdasarkan nilai ini Peraturan padanan adalah seperti berikut:

    nginx akan cuba mencari blok pelayan yang betul-betul sepadan dengan. nama_server dan nilai hos. Jika berbilang padanan tepat ditemui, blok pelayan pertama yang sepadan akan digunakan
  1. Jika tiada blok pelayan yang sepadan tepat ditemui, nginx cuba mencari blok pelayan yang nama_pelayannya bermula dengan *. Jika berbilang ditemui, blok pelayan yang paling lama akan dipilih
  2. jika Jika blok pelayan yang bermula dengan tidak ditemui, ia akan mencari blok pelayan yang berakhir dengan , jika terdapat berbilang padanan, padanan terpanjang dipilih
  3. Jika tiada padanan blok pelayan * ditemui, ia akan mencari blok pelayan yang mentakrifkan nama_server menggunakan ungkapan biasa (bermula dengan ~. ). Jika berbilang padanan ditemui, padanan pertama
  4. akan digunakan jika tiada padanan ungkapan biasa ditemui, nginx akan memilih blok pelayan lalai yang sepadan dengan medan dengar. Setiap gabungan IP dan port boleh dikonfigurasikan dengan satu dan hanya satu blok pelayan lalai Jika tidak, yang pertama dalam senarai tersedia akan dipilih Pelayan (pemilihan pada masa ini adalah rawak, pesanan tidak tetap)
  5. Contohnya adalah seperti berikut:

(1) Padanan nama_pelayan yang tepat, contohnya:

server {
   listen    80;
   server_name www.domain.com;
   ...
}
Salin selepas log masuk

(2) Rentetan bermula dengan * kad bebas:

server {
   listen    80;
   server_name *.domain.com;
   ...
}
Salin selepas log masuk

(3) Rentetan yang berakhir dengan * kad bebas:

server {
   listen    80;
   server_name www.*;
   ...
}
Salin selepas log masuk

(4) Ungkapan biasa yang sepadan:

server {
   listen    80;
   server_name ~^(?.+)\.domain\.com$;
   ...
}
Salin selepas log masuk

(5) Jika tiada satu pun yang sepadan, default_server digunakan tidak dinyatakan, pelayan pertama yang tersedia akan dipilih Kami boleh menentukan bahawa apabila tiada nilai hos yang sepadan, ralat akan dikembalikan kepada klien Boleh digunakan untuk menghalang orang lain daripada mengalihkan trafik spam ke tapak web anda.

server {
  listen 80  default_server;
  server_name _;  return 444;
}
Salin selepas log masuk

Biarkan nginx memutuskan sambungan daripada penyemak imbas dengan mengembalikan 444, kod ralat bukan standard nginx

Logik padanan lokasi

Analisis sintaks lokasi

location optional_modifier location_match {
  ...
}
Salin selepas log masuk
Pengubah suai yang tersedia adalah seperti berikut

Apakah logik padanan Pelayan dan Lokasi dalam Nginx?Peraturan penentuan

1. iaitu pemadanan yang tidak termasuk ungkapan biasa)

2 Jika terdapat blok lokasi menggunakan = pengubah suai yang sepadan sepenuhnya dengan URL yang diminta, lokasi akan digunakan serta-merta untuk membalas permintaan

.

3. Jika tiada padanan blok lokasi dengan = pengubah ditemui, awalan yang tidak tepat akan terus dikira, awalan padanan terpanjang akan ditemui berdasarkan uri yang diberikan, dan kemudian pemprosesan berikut akan dilakukan:

(1) Jika Lokasi padanan terpanjang mempunyai ^~ pengubah suai, dan nginx akan segera menggunakan lokasi ini untuk membalas permintaan

(2) Jika lokasi padanan terpanjang tidak mempunyai ^~ pengubah suai, nginx akan menyimpan sementara perlawanan , dan kemudian meneruskan pemadanan berikutnya

4. Selepas menentukan dan menyimpan blok lokasi awalan padanan yang paling lama, nginx terus menyemak lokasi padanan ungkapan biasa (sensitif huruf besar/kecil/huruf-. tidak sensitif). Jika terdapat ungkapan biasa Jika padanan yang diperlukan dipenuhi, lokasi ungkapan biasa pertama yang sepadan dengan uri yang diminta akan dipilih untuk membalas permintaan

5. Jika tiada lokasi ungkapan biasa yang sepadan dengan uri yang diminta ditemui, yang sebelumnya akan digunakan Permintaan respons lokasi awalan yang paling lama disimpan

Tambahan

Biasanya, sebaik sahaja anda memilih untuk menggunakan lokasi tertentu untuk membalas permintaan, permintaan akan diproses dalam lokasi tersebut, tanpa mengira lokasi lain, bagaimanapun, arahan tertentu di lokasi akan mencetuskan padanan lokasi baharu, seperti:

(1) fail_cuba

(2) tulis semula

(3) halaman_ralat

Atas ialah kandungan terperinci Apakah logik padanan Pelayan dan Lokasi dalam Nginx?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!