cari
RumahOperasi dan penyelenggaraanNginxBagaimana untuk mengkonfigurasi dan mengoptimumkan perkhidmatan fail statik Nginx

Direktori Akar dan Fail Indeks

Arahan akar menentukan direktori akar yang akan digunakan untuk mencari fail. Untuk mendapatkan laluan ke fail yang diminta, nginx menambahkan permintaan uri ke laluan yang ditentukan oleh arahan root. Arahan ini boleh diletakkan pada mana-mana peringkat dalam konteks http {} , pelayan {} atau lokasi {}. Dalam contoh berikut, arahan akar ditakrifkan untuk pelayan maya. Ia berfungsi untuk semua blok {} lokasi yang tidak mengandungi arahan akar untuk mentakrifkan semula akar secara eksplisit:

server {
  root /www/data;

  location / {
  }

  location /images/ {
  }

  location ~ \.(mp3|mp4) {
    root /www/media;
  }
}

Di sini, uri nginx bermula dengan /images/ akan berada dalam Carian /www/ data/images sistem fail untuk fail yang sepadan dalam direktori /. Jika uri berakhir dengan sambungan .mp3 atau .mp4, nginx mencari fail dalam direktori /www/media/ kerana ia ditakrifkan dalam blok lokasi yang sepadan.

Jika permintaan berakhir dengan /, nginx menganggapnya sebagai permintaan untuk direktori dan cuba mencari fail indeks dalam direktori. Arahan indeks mentakrifkan nama fail indeks (lalai ialah index.html). Untuk meneruskan contoh, jika uri permintaan ialah /images/some/path/ , nginx mengembalikan fail /www/data/images/some/path/index.html jika ia wujud. Jika tidak, nginx mengembalikan ralat http 404 (tidak dijumpai) secara lalai. Untuk mengkonfigurasi nginx untuk mengembalikan senarai direktori yang dijana secara automatik, sertakan parameter on dalam arahan autoindex:

location /images/ {
  autoindex on;
}

Anda boleh menyenaraikan berbilang nama fail dalam arahan indeks. nginx mencari fail dalam susunan yang ditentukan dan mengembalikan fail pertama yang ditemuinya.

location / {
  index index.$geo.html index.htm index.html;
}

Pembolehubah $geo yang digunakan di sini ialah pembolehubah tersuai yang ditetapkan melalui arahan geo. Nilai pembolehubah bergantung pada alamat IP pelanggan.

Untuk mengembalikan fail indeks, nginx menyemak untuk melihat sama ada ia wujud dan kemudian melakukan ubah hala dalaman ke uri baharu yang diperoleh dengan menambahkan nama fail indeks pada uri asas. Ubah hala dalaman menghasilkan carian baharu untuk lokasi dan mungkin berakhir di lokasi lain, seperti yang ditunjukkan dalam contoh berikut:

location / {
  root /data;
  index index.html index.php;
}

location ~ \.php {
  fastcgi_pass localhost:8000;
  #...

}

Di sini, jika uri dalam permintaan ialah /path/ dan /data/path/ index .html tidak wujud tetapi /data/path/index.php wujud, maka ubah hala dalaman ke /path/index.php akan dipetakan ke lokasi kedua. Akibatnya, permintaan itu diproksikan.

Cuba beberapa pilihan

Arahan try_files boleh digunakan untuk menyemak sama ada fail atau direktori yang ditetapkan akan mengubah hala secara dalaman dan mengembalikan jika tidak kod status yang ditentukan. Contohnya, untuk menyemak sama ada fail yang sepadan dengan uri permintaan wujud, gunakan arahan try_files dan pembolehubah $uri seperti berikut:

server {
  root /www/data;

  location /images/ {
    try_files $uri /images/default.gif;
  }
}

Fail ditentukan sebagai uri, menggunakan konteks lokasi semasa atau pelayan maya Arahan akar atau alias yang ditetapkan dalam diproses. Dalam kes ini, jika fail yang sepadan dengan uri asal tidak wujud, nginx akan mengubah hala secara dalaman ke uri yang ditentukan oleh parameter terakhir dan mengembalikan /www/data/images/default.gif .

Parameter terakhir juga boleh menjadi kod status (bermula terus dengan tanda sama) atau nama lokasi. Dalam contoh berikut, jika tiada argumen kepada arahan try_files menyelesaikan kepada fail atau direktori sedia ada, ralat 404 dikembalikan.

location / {
  try_files $uri $uri/ $uri.html =404;
}

Dalam contoh seterusnya, jika uri asal atau uri dengan garis miring mengekor yang dilampirkan tidak diselesaikan ke fail atau direktori sedia ada, permintaan akan diubah hala ke lokasi yang ditentukan dan dihantar ke pelayan proksi.

location / {
  try_files $uri $uri/ @backend;
}

location @backend {
  proxy_pass http://backend.example.com;
}

Mengoptimumkan prestasi kandungan yang disajikan

Kelajuan pemuatan ialah faktor utama dalam menyampaikan sebarang kandungan. Pengoptimuman kecil pada konfigurasi nginx anda boleh meningkatkan produktiviti dan membantu mencapai prestasi optimum.

Dayakan fail hantar

Secara lalai, nginx mengendalikan pemindahan fail itu sendiri dan menyalin fail ke dalam penimbal sebelum menghantar. Mendayakan arahan sendfile menghapuskan langkah menyalin data ke penimbal dan membolehkan data disalin terus dari satu deskriptor fail ke yang lain. Sebagai alternatif, untuk mengelakkan sambungan pantas daripada menduduki sepenuhnya proses pekerja, anda boleh mengehadkan jumlah data yang dipindahkan dalam satu panggilan sendfile() (dalam kes ini 1 mb) menggunakan arahan sendfile_max_chunk:

location /mp3 {
  sendfile      on;
  sendfile_max_chunk 1m;
  #...

}

Dayakan tcp_nopush

Gunakan perintah tcp_nopush bersama-sama dengan arahan sendfile; Ini membolehkan nginx menghantar pengepala respons http dalam paket sejurus selepas sendfile() mendapat sebahagian daripada data.

location /mp3 {
  sendfile  on;
  tcp_nopush on;
  #...

}

Dayakan tcp_nodelay

Arahan tcp_nodelay membenarkan mengatasi algoritma nagle, yang pada asalnya direka untuk menyelesaikan masalah paket kecil dalam rangkaian perlahan. Algoritma ini menggabungkan banyak paket kecil ke dalam satu paket yang lebih besar dan menghantar paket dengan kelewatan 200 milisaat. Hari ini, apabila menyiarkan fail statik yang besar, data boleh dihantar serta-merta tanpa mengira saiz paket. Latensi juga mempengaruhi aplikasi dalam talian (ssh, permainan dalam talian, urus niaga dalam talian, dsb.). Secara lalai, arahan tcp_nodelay ditetapkan kepada hidup, yang bermaksud algoritma nagle dilumpuhkan. Arahan ini hanya digunakan untuk sambungan keepalive:

location /mp3 {
  tcp_nodelay    on;
  keepalive_timeout 65;
  #...
  
}

Optimumkan baris gilir tertunggak

其中一个重要因素是 nginx 可以多快地处理传入连接。一般规则是在建立连接时,将其放入侦听套接字的 "listen" (监听)队列中。在正常负载下,队列很小或根本没有队列。但是在高负载下,队列会急剧增长,导致性能不均匀,连接中断,延迟增加。

显示积压队列使用命令 netstat -lan 来显示当前监听队列。输出可能如下所示,它显示在端口 80上的监听队列中,有 10 个未接受的连接,这些连接针对配置的最多 128 个排队连接。这种情况很正常。

current listen queue sizes (qlen/incqlen/maxqlen)
listen     local address     
0/0/128    *.12345      
10/0/128    *.80    
0/0/128    *.8080

相反,在以下命令中,未接受的连接数(192)超过了 128 的限制。当网站流量很大时,这种情况很常见。要获得最佳性能,需要在操作系统和 nginx 配置中增加可以排队等待 nginx 接受的最大连接数。

current listen queue sizes (qlen/incqlen/maxqlen)
listen     local address     
0/0/128    *.12345      
192/0/128    *.80    
0/0/128    *.8080

调整操作系统

将 net.core.somaxconn 内核参数的值从其默认值(128)增加到足以容纳大量流量的值。在这个例子中,它增加到 4096。

  • freebsd 的命令为 sudo sysctl kern.ipc.somaxconn=4096

  • linux 的命令为 1. sudo sysctl -w net.core.somaxconn=4096 2. 将 net.core.somaxconn = 4096 加入到 /etc/sysctl.conf 文件中。

调整 nginx

如果将 somaxconn 内核参数设置为大于 512 的值,请将 backlog 参数增加在 nginx listen 指令以匹配修改:

server {
  listen 80 backlog=4096;
  # ...

}

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi dan mengoptimumkan perkhidmatan fail statik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Unit Nginx: Menyokong bahasa pengaturcaraan yang berbezaUnit Nginx: Menyokong bahasa pengaturcaraan yang berbezaApr 16, 2025 am 12:15 AM

NginxUnit menyokong pelbagai bahasa pengaturcaraan dan dilaksanakan melalui reka bentuk modular. 1. Memuatkan Modul Bahasa: Muatkan modul yang sepadan mengikut fail konfigurasi. 2. Permulaan Permohonan: Jalankan kod aplikasi apabila bahasa panggilan berjalan. 3. Permintaan Pemprosesan: Teruskan permintaan kepada contoh permohonan. 4. Pulangan Respons: Kembalikan respons yang diproses kepada pelanggan.

Memilih antara nginx dan apache: sesuai untuk keperluan andaMemilih antara nginx dan apache: sesuai untuk keperluan andaApr 15, 2025 am 12:04 AM

Nginx dan Apache mempunyai kelebihan dan kekurangan mereka sendiri dan sesuai untuk senario yang berbeza. 1.Nginx sesuai untuk senario penggunaan sumber yang tinggi dan rendah. 2. Apache sesuai untuk senario di mana konfigurasi kompleks dan modul yang kaya diperlukan. Dengan membandingkan ciri teras mereka, perbezaan prestasi, dan amalan terbaik, anda boleh membantu anda memilih perisian pelayan yang paling sesuai dengan keperluan anda.

Cara Memulakan NginxCara Memulakan NginxApr 14, 2025 pm 01:06 PM

Soalan: Bagaimana untuk memulakan nginx? Jawapan: Pasang Nginx Startup Nginx Verification Nginx adalah nginx mula meneroka pilihan permulaan lain secara automatik Mula nginx

Cara memeriksa sama ada nginx dimulakanCara memeriksa sama ada nginx dimulakanApr 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 menutup nginxCara menutup nginxApr 14, 2025 pm 01:00 PM

Untuk menutup perkhidmatan nginx, ikuti langkah -langkah berikut: Tentukan jenis pemasangan: Red Hat/CentOS (status SistemCTL nginx) atau debian/ubuntu (status nginx) menghentikan perkhidmatan: Red Hat/CentOS (SystemCtl Stop Nginx) atau Debian/Ubuntu (perkhidmatan Nginx) (Syst

Cara Mengkonfigurasi Nginx di WindowsCara Mengkonfigurasi Nginx di WindowsApr 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.

Cara menyelesaikan ralat nginx403Cara menyelesaikan ralat nginx403Apr 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.

Cara memulakan nginx di linuxCara memulakan nginx di linuxApr 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.

See all articles

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 laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.