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:
Gabungan ip dan port
Satu ip , dengar port 80 secara lalai
Satu port, dengar semua antara muka ip secara lalai
soket unix laluan
Item terakhir biasanya hanya digunakan untuk menghantar permintaan antara pelayan yang berbeza
Peraturan untuk memilih pelayan untuk digunakan adalah seperti berikut:
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.
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
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 ... }
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:
(1) Padanan nama_pelayan yang tepat, contohnya:
server { listen 80; server_name www.domain.com; ... }
(2) Rentetan bermula dengan * kad bebas:
server { listen 80; server_name *.domain.com; ... }
(3) Rentetan yang berakhir dengan * kad bebas:
server { listen 80; server_name www.*; ... }
(4) Ungkapan biasa yang sepadan:
server { listen 80; server_name ~^(?.+)\.domain\.com$; ... }
(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; }
Biarkan nginx memutuskan sambungan daripada penyemak imbas dengan mengembalikan 444, kod ralat bukan standard nginx
Logik padanan lokasiAnalisis sintaks lokasi
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 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!location optional_modifier location_match {
...
}