国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

詳解Nginx 靜態(tài)文件服務(wù)配置及優(yōu)化

發(fā)布時(shí)間:2023-05-26 09:26 來(lái)源:西部 閱讀:138 作者:西部數碼 欄目: 虛擬主機 歡迎投稿:712375056

服務(wù)器

根目錄和索引文件

root 指令指定將用于搜索文件的根目錄。 為了獲取所請求文件的路徑,NGINX 將請求 URI 附加到 root 指令指定的路徑。該指令可以放在 http {} , server {} 或 location {} 上下文中的任何級別。在下面的示例中,為虛擬服務(wù)器定義了 root 指令。 它適用于未包含根指令的所有 location {} 塊,以顯式重新定義根:

server {
  root /www/data;

  location / {
  }

  location /images/ {
  }

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

在這里,NGINX 針對 /images/ 開(kāi)頭的 URI 將在文件系統的 /www/ data/images/ 目錄中搜索相應文件。 如果 URI 以 .mp3 或 .mp4 擴展名結尾,則 NGINX 會(huì )在 /www/media/ 目錄中搜索該文件,因為它是在匹配的位置塊中定義的。

如果請求以 / 結尾,則 NGINX 將其視為對目錄的請求,并嘗試在目錄中查找索引文件。 index 指令定義索引文件的名稱(chēng)(默認值為 index.html)。要繼續該示例,如果請求 URI 是 /images/some/path/ ,則 NGINX 會(huì )返回文件 /www/data/images/some/path/index.html (如果存在)。如果沒(méi)有,NGINX 默認返回 HTTP 404 錯誤(未找到)。要配置 NGINX 以返回自動(dòng)生成的目錄列表,請在 autoindex 指令中包含 on 參數:

location /images/ {
  autoindex on;
}

你可以在 index 指令中列出多個(gè)文件名。 NGINX按指定的順序搜索文件并返回它找到的第一個(gè)文件。

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

這里使用的 $geo 變量是通過(guò) geo 指令設置的自定義變量。變量的值取決于客戶(hù)端的 IP 地址。

要返回索引文件,NGINX 會(huì )檢查它是否存在,然后對通過(guò)將索引文件的名稱(chēng)附加到基礎 URI 上獲得的新 URI 進(jìn)行內部重定向。內部重定向導致對位置的新搜索,并且可能最終位于另一個(gè)位置,如以下示例所示:

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

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

}

這里,如果請求中的 URI 是 /path/ ,并且 /data/path/index.html 不存在但 /data/path/index.php 存在,則內部重定向到 /path/index.php 將映射到第二個(gè)位置。結果,請求被代理。

嘗試幾種選擇

try_files 指令可用于檢查指定的文件或目錄是否存在; NGINX 會(huì )進(jìn)行內部重定向,如果沒(méi)有,則返回指定的狀態(tài)代碼。例如,要檢查對應于請求 URI 的文件是否存在,請使用 try_files 指令和 $uri 變量,如下所示:

server {
  root /www/data;

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

該文件以 URI 的形式指定,使用在當前位置或虛擬服務(wù)器的上下文中設置的根或別名指令進(jìn)行處理。在這種情況下,如果對應于原始 URI 的文件不存在,NGINX 會(huì )將內部重定向到最后一個(gè)參數指定的 URI,并返回 /www/data/images/default.gif 。

最后一個(gè)參數也可以是狀態(tài)代碼(直接以等號開(kāi)頭)或位置名稱(chēng)。 在以下示例中,如果 try_files 指令的所有參數都不會(huì )解析為現有文件或目錄,則會(huì )返回 404 錯誤。

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

在下一個(gè)示例中,如果原始 URI 和帶有附加尾部斜杠的 URI 都不會(huì )解析為現有文件或目錄,則會(huì )將請求重定向到指定位置,并將其傳遞給代理服務(wù)器。

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

location @backend {
  proxy_pass http://wap.friendlycc.com.cn/host/
}

有關(guān)更多信息,請觀(guān)看 內容緩存 網(wǎng)絡(luò )研討會(huì ),了解如何顯著(zhù)提高網(wǎng)站性能,并深入了解 NGINX 的緩存功能。

優(yōu)化服務(wù)內容的性能

加載速度是提供任何內容的關(guān)鍵因素。 對 NGINX 配置進(jìn)行微小優(yōu)化可以提高生產(chǎn)力并幫助實(shí)現最佳性能。

啟用 sendfile

默認情況下,NGINX 會(huì )自行處理文件傳輸,并在發(fā)送之前將文件復制到緩沖區中。 啟用 sendfile 指令消除了將數據復制到緩沖區的步驟,并允許將數據從一個(gè)文件描述符直接復制到另一個(gè)文件描述符?;蛘?,為了防止一個(gè)快速連接完全占用工作進(jìn)程,可以使用 sendfile_max_chunk 指令限制單個(gè) sendfile() 調用中傳輸的數據量(在本例中為1 MB):

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

}

啟用 tcp_nopush

將 tcp_nopush 指令與 sendfile on; 指令一起使用。這使得 NGINX 可以在 sendfile() 獲取數據塊之后立即在一個(gè)數據包中發(fā)送 HTTP 響應頭。

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

}

啟用 tcp_nodelay

tcp_nodelay 指令允許覆蓋 Nagle 的算法 ,該算法最初設計用于解決慢速網(wǎng)絡(luò )中小數據包的問(wèn)題。該算法將許多小數據包合并為一個(gè)較大的數據包,并以 200 毫秒的延遲發(fā)送數據包。如今,在提供大型靜態(tài)文件時(shí),無(wú)論數據包大小如何,都可以立即發(fā)送數據。延遲也會(huì )影響在線(xiàn)應用程序(ssh,在線(xiàn)游戲,在線(xiàn)交易等)。默認情況下, tcp_nodelay 指令設置為 on,這意味著(zhù)禁用了 Nagle的算法。此指令僅用于 keepalive 連接:

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

優(yōu)化積壓隊列

其中一個(gè)重要因素是 NGINX 可以多快地處理傳入連接。一般規則是在建立連接時(shí),將其放入偵聽(tīng)套接字的 listen (監聽(tīng))隊列中。在正常負載下,隊列很小或根本沒(méi)有隊列。但是在高負載下,隊列會(huì )急劇增長(cháng),導致性能不均勻,連接中斷,延遲增加。

顯示積壓隊列使用命令 netstat -Lan 來(lái)顯示當前監聽(tīng)隊列。輸出可能如下所示,它顯示在端口 80上的監聽(tīng)隊列中,有 10 個(gè)未接受的連接,這些連接針對配置的最多 128 個(gè)排隊連接。這種情況很正常。

Current listen queue sizes (qlen/incqlen/maxqlen)
Listen     Local Address     
0/0/128    *.12345      
10/0/128    *.80    
0/0/128    *.8080

相反,在以下命令中,未接受的連接數(192)超過(guò)了 128 的限制。當網(wǎng)站流量很大時(shí),這種情況很常見(jiàn)。要獲得最佳性能,需要在操作系統和 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)增加到足以容納大量流量的值。在這個(gè)例子中,它增加到 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;
  # ...

}

? 文章翻譯自Nginx Serving Static Content ,部分做了語(yǔ)義調整。

以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持特網(wǎng)科技。

更多關(guān)于云服務(wù)器,域名注冊,虛擬主機的問(wèn)題,請訪(fǎng)問(wèn)特網(wǎng)科技官網(wǎng):wap.friendlycc.com.cn

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产精品毛片完整版视频| 另类 专区 欧美 制服| 高清不卡一区二区三区| 亚洲精品自偷自拍无码| 久久久久久AV无码免费网站| 久久精品日日躁夜夜躁欧美|