Jadual Kandungan
Apakah Nginx?
Arahan Asas
最小化配置
Rumah Operasi dan penyelenggaraan Nginx Apakah konsep asas Nginx

Apakah konsep asas Nginx

May 16, 2023 pm 05:02 PM
nginx

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
Salin selepas log masuk

Apabila instance nginx anda sedang berjalan, anda boleh menghantar isyarat yang sesuai dengan Untuk mengurus ia:

[sudo] nginx -s signal
Salin selepas log masuk

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

  • gzip on;
    Salin selepas log masuk
  • <🎜; >Konteks– blok mata, anda boleh mengisytiharkan arahan &ndash serupa dengan skop dalam bahasa pengaturcaraan /usr/local/etc/nginx/nginx.conf

  • worker_processes 2; # 全局上下文指令http {              # http 上下文   gzip on;        # http 上下文中的指令 server {          # server 上下文   listen 80;      # server 上下文中的指令 }
    }
    Salin selepas log masuk
  • 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.

Arahan biasa
  • 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
Arahan tatasusunan
  • 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
Arahan Tindakan

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;
 }
}
Salin selepas log masuk

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 kedua

lokasi, menulis semula dari /foo ke /bar

arahan pemulangan menyediakan gelagat yang berbeza:

server {
 location / {
   return 200;
   return 404;
 }
}
Salin selepas log masuk
    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 masuk
  • Ini 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"
Salin selepas log masuk
  1. Arahan

  2. Arahan server_name menerima berbilang nilai. Ia juga mengendalikan padanan kad bebas dan ungkapan biasa.

    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

    Apabila terdapat kekaburan, nginx akan menggunakan yang berikut:
  3. Nama tepat
  4. Kad bebas terpanjang Nama bermula dengan asterisk, seperti "*.example.org".

Nama kad bebas terpanjang berakhir dengan asterisk, cth. "mel.**"

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
  1. server_name .netguru.co;
    Salin selepas log masuk

    ialah singkatan daripada

    server_name  netguru.co  www.netguru.co  *.netguru.co;
    Salin selepas log masuk
  2. tetapi berbeza sedikit,
  3. disimpan dalam jadual kedua, yang bermaksud ia lebih kecil daripada Pengisytiharan eksplisit adalah lebih perlahan.

  4. 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 masuk

    root, 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 masuk

    location 指令

    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 masuk

    Nginx还有一些修饰符可以用于连接location。因为每个修饰符都有自己的优先级,所以它们会影响 location 模块在使用时的行为。

    =           - Exact match
    ^~          - Preferential match
    ~ && ~*     - Regex match
    no modifier - Prefix match
    Salin selepas log masuk

    Nginx 会先检查精确匹配。如果找不到,我们会找优先级最高的。如果之前的匹配尝试失败,正则表达式会按照出现的顺序逐个进行测试。至少,最后一个前缀匹配将被使用。

    location /match {
     return 200 &#39;Prefix match: matches everything that starting with /match&#39;;
    }
    
    location ~* /match[0-9] {
     return 200 &#39;Case insensitive regex match&#39;;
    }
    
    location ~ /MATCH[0-9] {
     return 200 &#39;Case sensitive regex match&#39;;
    }
    
    location ^~ /match0 {
     return 200 &#39;Preferential match&#39;;
    }
    
    location = /match {
     return 200 &#39;Exact match&#39;;
    }
    /match/    # => &#39;Exact match&#39;/match0    # => &#39;Preferential match&#39;/match2    # => &#39;Case insensitive regex match&#39;/MATCH1    # => &#39;Case sensitive regex match&#39;/match-abc # => &#39;Prefix match: matches everything that starting with /match&#39;
    Salin selepas log masuk

    try_files 指令

    尝试不同的路径,找到一个路径就返回。

    try_files $uri index.html =404;
    Salin selepas log masuk

    所以对于 /foo.html 请求,它将尝试按以下顺序返回文件:

    1. $uri ( /foo.html )

    2. index.html

    3. 如果什么都没找到则返回 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 masuk

    Atas ialah kandungan terperinci Apakah konsep asas Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

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.

Cara Mengkonfigurasi Nginx di Windows Cara Mengkonfigurasi Nginx di Windows Apr 14, 2025 pm 12:57 PM

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.

Bagaimana untuk memeriksa sama ada Nginx dimulakan? Bagaimana untuk memeriksa sama ada Nginx dimulakan? Apr 14, 2025 pm 12:48 PM

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.

Cara memulakan nginx di linux Cara memulakan nginx di linux Apr 14, 2025 pm 12:51 PM

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.

Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

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

Cara menyelesaikan nginx403 Cara menyelesaikan nginx403 Apr 14, 2025 am 10:33 AM

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.

Cara menyelesaikan ralat nginx304 Cara menyelesaikan ralat nginx304 Apr 14, 2025 pm 12:45 PM

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.

Cara menyelesaikan ralat nginx403 Cara menyelesaikan ralat nginx403 Apr 14, 2025 pm 12:54 PM

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.

See all articles