最全面 Nginx 入門教程 + 常用配置解析

個人整理資料,轉帖註明出處,謝謝~

 

Nginx介紹和安裝

一個簡單的配置文件

模塊介紹

常用場景配置

進階內容

參考資料

 

 

== Nginx介紹和安裝 ==

 

Nginx是一個自由、開源、高性能及輕量級的HTTP服務器及反轉代理服務器,

其性能與IMAP/POP3代理服務器相當。Nginx以其高性能、穩定、功能豐富、配置簡單及佔用系統資源少而著稱。

Nginx 超越 Apache 的高性能和穩定性,使得國內使用 Nginx 作爲 Web 服務器的網站也越來越多.

 

*基礎功能

處理靜態文件,索引文件以及自動索引; 

反向代理加速(無緩存),簡單的負載均衡和容錯;

FastCGI,簡單的負載均衡和容錯;

模塊化的結構。過濾器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI過濾器中,到同一個 proxy 或者 FastCGI 的多個子請求併發處理;

SSL 和 TLS SNI 支持;

 

 

*優勢

Nginx專爲性能優化而開發,性能是其最重要的考量, 實現上非常注重效率 。它支持內核Poll模型,能經受高負載的考驗, 有報告表明能支持高達 50,000 個併發連接數。 

Nginx作爲負載均衡服務器: Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作爲 HTTP代理服務器對外進行服務。

Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峯值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啓服務器。

例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與內存佔用率非常低。

nginx官方表示保持10,000個沒有活動的連接,它只佔2.5M內存,就穩定性而言, nginx比lighthttpd更勝一籌。 

Nginx支持熱部署。它的啓動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。 

Nginx採用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。

 

*nginx的安裝

 

開發穩定版: Nginx 0.8.X

當前穩定版: Nginx 0.7.X

歷史穩定版: Nginx 0.6.X

 

== 一個簡單的配置文件 ==

 

== 模塊介紹 ==

模塊劃分:

#Core 核心模塊

#Events 事件模塊

#HTTP HTTP模塊

#Mail 郵件模塊

 

 

*核心模塊的常用組件

 

*事件模塊的常用組件

 

*HTTP模塊的核心組件和變量

 

*郵件模塊的常用組件(略)

== 常用場景配置 ==

1.多臺服務器配置負載均衡

 

 

ip_hash; nginx中的ip_hash技術能夠將某個ip的請求定向到同一臺後端,這樣一來這個ip下的某個客戶端和某個後端就能建立起穩固的session

 

1.down  表示單前的 server 暫時不參與負載 

2.weight  默認爲 1.weight 越大,負載的權重就越大。 

3.backup: 其它所有的非 backup 機器 down 或者忙的時候,請求 backup機器。所以這臺機器壓力會最輕。

 

2.通過手機客戶端的頭信息或者請求的參數轉發到不用目錄

 

1、正則表達式匹配,其中:

= 完全相等;

~爲區分大小寫匹配;

~*爲不區分大小寫匹配;

!~和!~*分別爲區分大小寫不匹配及不區分大小寫不匹配。

        2、文件及目錄匹配,其中:

-f和!-f用來判斷是否存在文件;

-d和!-d用來判斷是否存在目錄;

-e和!-e用來判斷是否存在文件或目錄;

-x和!-x用來判斷文件是否可執行。

if (-d $request_filename){ ... }

 

哪些地方會出現正則表達式:

1.location ~* /.(gif|jpg|png|swf|flv)${...}

2.rewrite ^(.*)$ /nginx-ie/$1 break;

 

正則表達式舉例:

1.多目錄轉成參數 abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

if ($host ~* (.*)/.domain/.com) { 

set $sub_name $1;    

rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last; 

}

2.目錄對換 /123456/xxxx -> /xxxx?id=123456

rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;

 

3.防盜鏈

 

4.訪問控制:身份驗證、限制IP

 

cp /usr/local/apache/apache8001/bin/htpasswd /usr/local/bin/

/usr/local/bin/htpasswd -c htpasswd root

 

5.查看Nginx的運行狀態

 

== 進階內容 ==

1.查看Nginx的運行狀態

 

Active connections: 364

server accepts handled requests

5477919 5477919 17515830

Reading: 10 Writing: 26 Waiting: 328

 

意思如下:

active connections – 當前 Nginx 正處理的活動連接數。

serveraccepts handled requests -- 總共處理了 5477919 個連接 , 成功創建 5477919 次握手 (證明中間沒有失敗的 ), 總共處理了 17515830 個請求 ( 平均每次握手處理了 3.2 個數據請求 )。

reading -- nginx 讀取到客戶端的 Header 信息數。

writing -- nginx 返回給客戶端的 Header 信息數。

waiting -- 開啓 keep-alive 的情況下,這個值等於 active - (reading + writing),意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接。

 

2.案例分析:

 

將web server由apache換爲nginx後,卻帶來意想不到的問題.多個頁面顯示模塊顯示"正在加載中..."然後一直停頓,使用FireBug調試前端,XSL文件解析失敗.但載入又是HTTP 200 的正常狀態.

繼續用FireBug調試,發現XSL文件下載時的HTTP響應頭中, 

Content-Type是oct/stream ,而在原來的apache中,是text/xml,於是修改/etc/nginx/mime.types文件.將XSL的擴展名加到xml組中.問題解決. 

 

3. 通過系統的信號控制 Nginx 

使用信號加載新的配置

平滑升級到新的二進制代碼

4. 使用Nginx限制下載速率和併發數 

limit_zone   limit_conn   limit_rate

5. 使用Nginx進行地址轉發

rewrite

nginx rewrite中last和break的區別: http://blog.sina.com.cn/s/blog_4b01279a0100hd4c.html

 

6.Nginx Internals: Nginx源代碼、內部機制的分析

http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/

== 參考資料 ==

Nginx中文文檔:

http://wiki.nginx.org/NginxChs

 

服務器系統架構分析日誌: 

http://www.sudone.com/

 

使用 Nginx 提升網站訪問速度: 

http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/

 

Nginx介紹和安裝

一個簡單的配置文件

模塊介紹

常用場景配置

進階內容

參考資料

發佈了56 篇原創文章 · 獲贊 37 · 訪問量 92萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章