我從下面的幾個方面分析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的值等於這個整...