nginx最詳細分析

2021-09-24 00:23:26 字數 3022 閱讀 5447

我從下面的幾個方面分析nginx。

nginx是什麼?

nginx是乙個高效能的http和反向**伺服器,也是乙個imap/pop3/smtp**伺服器。是乙個開源的專案。後來**在nginx基礎上針對大訪問量做出了修改,做出了tengine。

nginx**好

​ 1、占有記憶體少,併發能力強,nginx的併發能力在同型別的網頁伺服器中表現較好。

​ 2、nginx相較於apache\lighttpd具有占有記憶體少

​ 3、穩定性高等優勢,並且依靠併發能力強

​ 4、有豐富的模組庫以及友好靈活的配置

​ 5、支援熱部署。即可以在7×24小時不間斷服務的前提下,公升級nginx的可執行檔案。當然,它也支援不停止服務就更新配置項、更換日誌檔案等功能。

​ 6、可以做反向**,並且可以支援七層負載均衡

nginx 為什麼好?

nginx為什麼比apache快?

但是也有他的缺點:

nginx 使用的情景?

1、nginx適用於高併發的情況。但是在併發不高的時候,nginx的效能並不能體現出來

2、nginx可以做**伺服器。

說到**。可以引申出正向和反向**。

​ 正向**,架設在客戶機與目標主機之間,只用於**內部網路對internet的連線請求,客戶機必須指定**伺服器,並將本來要直接傳送到web伺服器上的http請求傳送到**伺服器中。我們平時用的vpn就是乙個典型的正向**。

如下圖:

​ 反向**伺服器架設在伺服器端,通過緩衝經常被請求的頁面來緩解伺服器的工作量,將客戶機請求**給內部網路上的目標伺服器;並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時**伺服器與目標主機一起對外表現為乙個伺服器。

如下圖:

反向**可以防止外網對內網伺服器的攻擊、快取、減少伺服器壓力以及負載均衡。

3、nginx可以做負載均衡器

負載均衡器就是圖中的nginx1,通過反向**,以及一些均衡演算法。把client分發給不同的web server。

nginx 如何配置?

預設的配置檔案在/etc/nginx。叫nginx.conf或者是在conf.d下。

日誌檔案的配置

預設格式

預設存放位置

access_log  /var/log/nginx/access.log  main;
錯誤日誌

預設:

error_log /var/log/nginx/error.log;

nginx的error_log型別如下(從左到右:debug最詳細 crit最少):

[ debug | info | notice | warn | error | crit ]

例如:error_log logs/nginx_error.log crit;

字段說明

欄位名稱

含義remoteaddr

表示客戶端ip位址。

remote_user

表示客戶端使用者名稱。

request

表示請求的url和http協議。

status

表示請求狀態。

bodybytessent

表示傳送給客戶端的位元組數,不包括響應頭的大小;該變數與apache模組modlogconfig裡的bytes_sent傳送給客戶端的總位元組數相同。

connection

表示連線的序列號。

connection_requests

表示當前通過乙個連線獲得的請求數量。

msec

表示日誌寫入的時間。單位為秒,精度是毫秒。

pipe

表示請求是否通過http流水線(pipelined)傳送。通過http流水線傳送則pipe值為「p」,否則為「.」。

表示從哪個頁面鏈結訪問過來的。

表示客戶端瀏覽器相關資訊,前後必須加上雙引號。

requestlength

表示請求的長度。包括請求行,請求頭和請求正文。

request_time

表示請求處理時間,單位為秒,精度為毫秒。從讀入客戶端的第乙個位元組開始,直到把最後乙個字元傳送給客戶端後進行日誌寫入為止。

[$time_local]

表示通用日誌格式下的本地時間,前後必須加上中括號

配置工作程序數目

worker_processes 4;
工作程序:數目。根據硬體調整,通常等於cpu數量或者2倍於cpu。

配置keepalive超時時間

keepalive_timeout 60;
配置負載均衡
location ~* \.(***|mp4)$
負載均衡的幾種分配方式:

輪詢(預設)、weight、ip_hash、url_hash等

輪詢(預設)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

weight:

upstream bakend

ip_hash:

upstream bakend

url_hash:

upstream backend

APACHE與NGINX 詳細分析

apache是目前最流行的web應用伺服器,佔據了網際網路應用伺服器70 以上的份額。apache能取得如此成功並不足為奇 它免費 穩定且效能卓越 但apache能取得如此佳績的另乙個原因是,當時網際網路剛剛興起時,apache是第乙個可用的web應用伺服器,人們沒有其他的選擇。不可否認,apach...

APACHE與NGINX 詳細分析

apache是目前最流行的web應用伺服器,佔據了網際網路應用伺服器70 以上的份額。apache能取得如此成功並不足為奇 它免費 穩定且效能卓越 但apache能取得如此佳績的另乙個原因是,當時網際網路剛剛興起時,apache是第乙個可用的web應用伺服器,人們沒有其他的選擇。不可否認,apach...

const詳細分析

最近在分析 linux 驅動的過程過程中遇到一些關於 const 的使用,現在在這裡詳細剖析一下 一,const int p 首先分析一下幾個概念 1 p 是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡 p變數的值就是乙個位址,該位址下存放的是乙個整數,p的值等於這個整...