Apakah konsep asas Nginx
Apakah Nginx?
Nginx pada asalnya dicipta sebagai pelayan web untuk menyelesaikan masalah C10k. Sebagai pelayan web, ia boleh menyampaikan data anda pada kelajuan yang sangat pantas. Tetapi Nginx adalah lebih daripada sekadar pelayan web, anda juga boleh menggunakannya sebagai proksi terbalik untuk disepadukan dengan mudah dengan pelayan huluan yang lebih perlahan seperti Unicorn atau Puma. Anda boleh mengedarkan trafik dengan sewajarnya (pengimbang beban), media strim, mengubah saiz imej secara dinamik, kandungan cache dan banyak lagi. Seni bina nginx asas terdiri daripada proses induk dan proses pekerjanya. Tuan membaca fail konfigurasi dan mengekalkan proses pekerja, dan pekerja sebenarnya memproses permintaan itu.
Arahan Asas
Untuk memulakan nginx, masukkan sahaja:
[sudo] nginx
Apabila instance nginx anda sedang berjalan, anda boleh menghantar isyarat yang sesuai dengan Untuk mengurus ia:
[sudo] nginx -s signal
Isyarat tersedia:
berhenti – penutupan pantas
berhenti – thread pekerja untuk menyelesaikan pemprosesan)
muat semula –
- Perintah dan konteks fail konfigurasi nginx, lokasi lalai termasuk:
,
fail konfigurasi terdiri daripada bahagian berikut:
Arahan&ndash, mengandungi nama dan parameter, berakhir dengan koma bertitik
/etc/nginx/nginx.conf
<🎜; >Konteks– blok mata, anda boleh mengisytiharkan arahan &ndash serupa dengan skop dalam bahasa pengaturcaraan
/usr/local/etc/nginx/nginx.conf
jenis arahan
/usr/local/nginx/conf/nginx.conf
apabila menggunakan arahan yang sama dalam berbeza Penjagaan mesti diambil apabila bekerja dengan model warisan. Terdapat tiga jenis arahan, setiap satu dengan model pewarisannya sendiri.
gzip on;
worker_processes 2; # 全局上下文指令http { # http 上下文 gzip on; # http 上下文中的指令 server { # server 上下文 listen 80; # server 上下文中的指令 } }
mempunyai nilai unik setiap konteks. Selain itu, ia hanya boleh ditakrifkan sekali dalam konteks semasa. Mengatasi nilai ibu bapa dalam konteks kanak-kanak hanya sah dalam konteks anak semasa.
gzip on; gzip off; # 非法,不能在同一个上下文中指定同一普通指令2次server { location /downloads { gzip off; } location /assets { # gzip is on here } }
Salin selepas log masuk
Menambah berbilang arahan dalam konteks yang sama akan menambah berbilang nilai bukannya liputan penuh. Menentukan arahan dalam konteks kanak-kanak akan mengatasi nilai dalam konteks induk.
error_log /var/log/nginx/error.log; error_log /var/log/nginx/error_notive.log notice; error_log /var/log/nginx/error_debug.log debug; server { location /downloads { # 下面的配置会覆盖父级上下文中的指令 error_log /var/log/nginx/error_downloads.log; } }
Salin selepas log masuk
Tindakan ialah arahan untuk mengubah sesuatu. Bergantung pada keperluan modul, tingkah laku yang diwarisi mungkin berbeza-beza. Sebagai contoh, arahan tulis semula akan dilaksanakan selagi ia sepadan:
server { rewrite ^ /foobar; location /foobar { rewrite ^ /foo; rewrite ^ /bar; } }
Jika pengguna ingin cuba mendapatkan /sample:
Tulisan semula pelayan akan dilaksanakan, daripada /sample tulis semula ke /foobar
lokasi /foobar akan dilaksanakan oleh padanan tulis semula pertama
lokasi, menulis semula dari /foobar to /foo
Pelaksanaan penulisan semula kedualokasi, menulis semula dari /foo ke /bar
arahan pemulangan menyediakan gelagat yang berbeza:
server { location / { return 200; return 404; } }
- Dalam kes di atas, pulangkan 200 segera.
- Memproses permintaan
Di dalam Nginx, anda boleh menentukan berbilang pelayan maya, setiap pelayan maya diterangkan dengan konteks pelayan{}.
server { listen *:80 default_server; server_name netguru.co; return 200 "Hello from netguru.co"; } server { listen *:80; server_name foo.co; return 200 "Hello from foo.co"; } server { listen *:81; server_name bar.co; return 200 "Hello from bar.co"; }
Salin selepas log masukIni akan memberitahu Nginx cara mengendalikan permintaan masuk. Apabila menyemak gabungan port IP yang diberikan, Nginx akan menguji hos maya mana yang mempunyai set arahan dengar. Kemudian, nilai arahan nama_server akan mengesan pengepala Hos (yang menyimpan nama domain hos).
Nginx akan memilih hos maya dalam susunan berikut: - Hos port IP yang sepadan dengan arahan sever_name
mempunyai default_server Ditandai Hos IP-Port
Hos IP-Port yang ditakrifkan pertama
Jika tiada padanan, tolak sambungan.
Contohnya:
Request to foo.co:80 => "Hello from foo.co"Request to www.foo.co:80 => "Hello from netguru.co"Request to bar.co:80 => "Hello from netguru.co"Request to bar.co:81 => "Hello from bar.co"Request to foo.co:81 => "Hello from bar.co"
Arahan
- Arahan server_name menerima berbilang nilai. Ia juga mengendalikan padanan kad bebas dan ungkapan biasa. Apabila terdapat kekaburan, nginx akan menggunakan yang berikut:
server_name netguru.co www.netguru.co; # exact matchserver_name *.netguru.co; # wildcard matchingserver_name netguru.*; # wildcard matchingserver_name ~^[0-9]*\.netguru\.co$; # regexp matching
Salin selepas log masuk - Nama tepat
- Kad bebas terpanjang Nama bermula dengan asterisk, seperti "*.example.org".
server_name
Memadankan ungkapan biasa dahulu (mengikut konfigurasi failkan Pesanan dalam)
Nginx akan menyimpan tiga jadual cincang untuk menyimpan nama tertentu, kad bebas bermula dengan asterisk dan kad bebas yang berakhir dengan asterisk. Jika keputusan tiada dalam mana-mana jadual, ujian ungkapan biasa akan dilakukan secara berurutan.
- Perlu diingat bahawa
server_name .netguru.co;
Salin selepas log masukialah singkatan daripada
server_name netguru.co www.netguru.co *.netguru.co;
Salin selepas log masuk tetapi berbeza sedikit, - disimpan dalam jadual kedua, yang bermaksud ia lebih kecil daripada Pengisytiharan eksplisit adalah lebih perlahan.
- Perintah
在很多情况下,能够找到 listen 指令,接受IP:端口值
listen 127.0.0.1:80; listen 127.0.0.1; # by default port :80 is usedlisten *:81; listen 81; # by default all ips are usedlisten [::]:80; # IPv6 addresseslisten [::1]; # IPv6 addresses
Salin selepas log masuk然而,还可以指定 UNIX-domain 套接字。
listen unix:/var/run/nginx.sock;
Salin selepas log masuk你甚至可以使用主机名
listen localhost:80; listen netguru.co:80;
Salin selepas log masuk但请慎用,由于主机可能无法启动 nginx,导致无法绑定在特定的 TCP Socket。
最后,如果指令不存在,则使用
*:80
。最小化配置
有了这些知识 – 我们应该能够创建并理解运行 nginx 所需的最低配置。
# /etc/nginx/nginx.confevents {} # events context needs to be defined to consider config validhttp { server { listen 80; server_name netguru.co www.netguru.co *.netguru.co; return 200 "Hello"; } }
Salin selepas log masukroot, location, 和 try_files 指令
root 指令
root 指令设置请求的根目录,允许 nginx 将传入请求映射到文件系统。
server { listen 80; server_name netguru.co; root /var/www/netguru.co; }
Salin selepas log masuk根据给定的请求,指定 nginx 服务器允许的内容
netguru.co:80/index.html # returns /var/www/netguru.co/index.htmlnetguru.co:80/foo/index.html # returns /var/www/netguru.co/foo/index.html
Salin selepas log masuklocation
指令location指令根据请求的 URI 来设置配置。
location [modifier] path
location /foo/ { # ...}
Salin selepas log masuk如果没有指定修饰符,则路径被视为前缀,其后可以跟随任何东西。
以上例子将匹配
/foo /fooo /foo123 /foo/bar/index.html ...
Salin selepas log masuk此外,在给定的上下文中可以使用多个 location 指令。
server { listen 80; server_name netguru.co; root /var/www/netguru.co; location / { return 200 "root"; } location /foo/ { return 200 "foo"; } } netguru.co:80 / # => "root"netguru.co:80 /foo # => "foo"netguru.co:80 /foo123 # => "foo"netguru.co:80 /bar # => "root"
Salin selepas log masukNginx还有一些修饰符可以用于连接location。因为每个修饰符都有自己的优先级,所以它们会影响 location 模块在使用时的行为。
= - Exact match ^~ - Preferential match ~ && ~* - Regex match no modifier - Prefix match
Salin selepas log masukNginx 会先检查精确匹配。如果找不到,我们会找优先级最高的。如果之前的匹配尝试失败,正则表达式会按照出现的顺序逐个进行测试。至少,最后一个前缀匹配将被使用。
location /match { return 200 'Prefix match: matches everything that starting with /match'; } location ~* /match[0-9] { return 200 'Case insensitive regex match'; } location ~ /MATCH[0-9] { return 200 'Case sensitive regex match'; } location ^~ /match0 { return 200 'Preferential match'; } location = /match { return 200 'Exact match'; } /match/ # => 'Exact match'/match0 # => 'Preferential match'/match2 # => 'Case insensitive regex match'/MATCH1 # => 'Case sensitive regex match'/match-abc # => 'Prefix match: matches everything that starting with /match'
Salin selepas log masuktry_files
指令尝试不同的路径,找到一个路径就返回。
try_files $uri index.html =404;
Salin selepas log masuk所以对于
/foo.html
请求,它将尝试按以下顺序返回文件:$uri ( /foo.html )
index.html
如果什么都没找到则返回 404
有趣的是,如果我们在服务器上下文中定义 try_files,然后定义匹配的所有请求的 location —— try_files 将不会执行。
这是因为在服务器上下文中定义的 try_files 是它的 pseudo-location,这是最不可能的位置。因此,location/的定义将比pseudo-location更为明确。
server { try_files $uri /index.html =404; location / { } }
Salin selepas log masuk因此,你应该避免在 server 上下文中出现 try_files:
server { location / { try_files $uri /index.html =404; } }
Salin selepas log masukAtas ialah kandungan terperinci Apakah konsep asas Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.

Jawab kepada Soalan: 304 Tidak diubahsuai ralat menunjukkan bahawa penyemak imbas telah cache versi sumber terkini permintaan klien. Penyelesaian: 1. Kosongkan cache penyemak imbas; 2. Lumpuhkan cache penyemak imbas; 3. Konfigurasi nginx untuk membolehkan cache pelanggan; 4. Periksa keizinan fail; 5. Semak fail hash; 6. Lumpuhkan CDN atau cache proksi terbalik; 7. Mulakan semula nginx.

Pelayan tidak mempunyai kebenaran untuk mengakses sumber yang diminta, mengakibatkan ralat NGINX 403. Penyelesaian termasuk: Periksa keizinan fail. Semak konfigurasi .htaccess. Semak konfigurasi Nginx. Konfigurasikan keizinan Selinux. Semak peraturan firewall. Menyelesaikan masalah lain seperti masalah penyemak imbas, kegagalan pelayan, atau kesilapan lain yang mungkin.
