nginx應用技術第二版
原文: http:///html/85/t-1685.html
目 錄
一、 Nginx 基礎知識
二、 Nginx 安裝及除錯
三、 Nginx Rewrite
四、 Nginx Redirect
五、 Nginx 目錄自動加斜線:
六、 Nginx Location
七、 Nginx expires
八、 Nginx 防盜鏈
九、 Nginx 訪問控制
十、 Nginx日誌處理
十一、 Nginx Cache
十二、 Nginx負載均衡
十三、 Nginx簡單最佳化
十四、 如何構建高效能的LEMP環境
十五、 Nginx服務監控
十六、 常見問題與錯誤處理.
十七、 相關資源下載
一、 Nginx 基礎知識
二、 Nginx 安裝及除錯
三、 Nginx Rewrite
四、 Nginx Redirect
五、 Nginx 目錄自動加斜線:
六、 Nginx Location
七、 Nginx expires
八、 Nginx 防盜鏈
九、 Nginx 訪問控制
十、 Nginx日誌處理
十一、 Nginx Cache
十二、 Nginx負載均衡
十三、 Nginx簡單最佳化
十四、 如何構建高效能的LEMP環境
十五、 Nginx服務監控
十六、 常見問題與錯誤處理.
十七、 相關資源下載
一、 Nginx 基礎知識
1、簡介
Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點執行超過兩年半了。Igor 將原始碼以類BSD許可證的形式釋出。儘管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名了。
更多的請見官方wiki:
2、 Nginx的優點
nginx做為HTTP伺服器,有以下幾項基本特性:
1) 處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝.
2) 無快取的反向代理加速,簡單的負載均衡和容錯.
3) FastCGI,簡單的負載均衡和容錯.
4) 模組化的結構。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理伺服器處理單頁中存在的多個SSI,則這項處理可以並行執行,而不需要相互等待。
5) 支援SSL 和 TLS SNI.
Nginx專為效能最佳化而開發,效能是其最重要的考量, 實現上非常注重效率 。它支援核心Poll模型,能經受高負載的考驗, 有報告表明能支援高達 50,000 個併發連線數。
Nginx具有很高的穩定性。其它HTTP伺服器,當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器。例如當前apache一旦上到200個以上程式,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與記憶體佔用率非常低。nginx官方表示保持10,000個沒有活動的連線,它只佔2.5M記憶體,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言, nginx比lighthttpd更勝一籌。
Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。
Nginx採用master-slave模型, 能夠充分利用SMP的優勢,且能夠減少工作程式在磁碟I/O的阻塞延遲。當採用select()/poll()呼叫時,還可以限制每個程式的連線數。
Nginx程式碼質量非常高,程式碼很規範, 手法成熟, 模組擴充套件也很容易。特別值得一提的是強大的Upstream與Filter鏈。 Upstream為諸如reverse proxy, 與其他伺服器通訊模組的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出做為當前filter的輸入,這有點像Unix的管線。這意味著,一個模組可以開始壓縮從後端伺服器傳送過來的請求,且可以在模組接收完後端伺服器的整個請求之前把壓縮流轉向客戶端。
Nginx採用了一些os提供的最新特性如對sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支援,從而大大提高了效能
1、簡介
Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點執行超過兩年半了。Igor 將原始碼以類BSD許可證的形式釋出。儘管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名了。
更多的請見官方wiki:
2、 Nginx的優點
nginx做為HTTP伺服器,有以下幾項基本特性:
1) 處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝.
2) 無快取的反向代理加速,簡單的負載均衡和容錯.
3) FastCGI,簡單的負載均衡和容錯.
4) 模組化的結構。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理伺服器處理單頁中存在的多個SSI,則這項處理可以並行執行,而不需要相互等待。
5) 支援SSL 和 TLS SNI.
Nginx專為效能最佳化而開發,效能是其最重要的考量, 實現上非常注重效率 。它支援核心Poll模型,能經受高負載的考驗, 有報告表明能支援高達 50,000 個併發連線數。
Nginx具有很高的穩定性。其它HTTP伺服器,當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器。例如當前apache一旦上到200個以上程式,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與記憶體佔用率非常低。nginx官方表示保持10,000個沒有活動的連線,它只佔2.5M記憶體,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言, nginx比lighthttpd更勝一籌。
Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。
Nginx採用master-slave模型, 能夠充分利用SMP的優勢,且能夠減少工作程式在磁碟I/O的阻塞延遲。當採用select()/poll()呼叫時,還可以限制每個程式的連線數。
Nginx程式碼質量非常高,程式碼很規範, 手法成熟, 模組擴充套件也很容易。特別值得一提的是強大的Upstream與Filter鏈。 Upstream為諸如reverse proxy, 與其他伺服器通訊模組的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出做為當前filter的輸入,這有點像Unix的管線。這意味著,一個模組可以開始壓縮從後端伺服器傳送過來的請求,且可以在模組接收完後端伺服器的整個請求之前把壓縮流轉向客戶端。
Nginx採用了一些os提供的最新特性如對sendfile (Linux 2.2+),accept-filter (FreeBSD 4.1+),TCP_DEFER_ACCEPT (Linux 2.4+) 的支援,從而大大提高了效能
Nginx 啟動:
CODE:
後面文章會寫nginx的編譯安裝,
後面文章會寫nginx的編譯安裝,
4、Nginx 配置檔案修改重新載入:
CODE:
2. 正規表示式匹配,其中:
* ~ 為區分大小寫匹配
* ~* 為不區分大小寫匹配
* !~和!~* 分別為區分大小寫不匹配及不區分大小寫不匹配
* ~ 為區分大小寫匹配
* ~* 為不區分大小寫匹配
* !~和!~* 分別為區分大小寫不匹配及不區分大小寫不匹配
3. 檔案及目錄匹配,其中:
* -f和!-f用來判斷是否存在檔案
* -d和!-d用來判斷是否存在目錄
* -e和!-e用來判斷是否存在檔案或目錄
* -x和!-x用來判斷檔案是否可執行
* -f和!-f用來判斷是否存在檔案
* -d和!-d用來判斷是否存在目錄
* -e和!-e用來判斷是否存在檔案或目錄
* -x和!-x用來判斷檔案是否可執行
3. Nginx 的一些可用的全域性變數,可用做條件判斷:
CODE:
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
四、 Nginx 代理
將所有linuxtone.org與netseek.linuxtone.org域名全部自跳轉到
將所有linuxtone.org與netseek.linuxtone.org域名全部自跳轉到
CODE:
server
{
listen 80;#監聽埠
server_name linuxtone.org netseek.linuxtone.org; #提供服務的主機名
index index.html index.jsp index.jhtml;
root /www/xbnfront
if ($host !~ "^www\.linxtone\.org$") { #不區分大小寫匹配;
rewrite ^(.*) http://$1 redirect; #
}
{
listen 80;#監聽埠
server_name linuxtone.org netseek.linuxtone.org; #提供服務的主機名
index index.html index.jsp index.jhtml;
root /www/xbnfront
if ($host !~ "^www\.linxtone\.org$") { #不區分大小寫匹配;
rewrite ^(.*) http://$1 redirect; #
}
五、 Nginx 目錄自動加斜線:
CODE:
if (-d $request_filename){
rewrite ^/(.*)([^/])$ permanent; #$1代表前面的任意字元,$2代表
}
這樣再對 請求,nginx就會進行判斷了,如果請求的是一個資料夾,會自動在最後加上/符號,如果請求的是一個檔案,則不會改變原有url
接下來對這段程式碼進行一個解釋
1、if (-d $request_filename),如果請求的是一個資料夾,則為真,進到if語句中執行
2、rewrite是執行url重寫操作
3、^/(.*)([^/])$表示以/符號開始並緊跟著任何字元,同時不是以/為結束的字串,在我的url中,(.*)表示的ww,([^/])表示的w
4、 表示的重寫後的地址,$host是請求的域名,$1是前面第一個括號裡的內容ww,在我的url裡就是wordpres $2是前面第二個括號裡的內容,在我的url裡是w
5、permanent表示,返回永久重定向的HTTP狀態301
rewrite ^/(.*)([^/])$ permanent; #$1代表前面的任意字元,$2代表
}
這樣再對 請求,nginx就會進行判斷了,如果請求的是一個資料夾,會自動在最後加上/符號,如果請求的是一個檔案,則不會改變原有url
接下來對這段程式碼進行一個解釋
1、if (-d $request_filename),如果請求的是一個資料夾,則為真,進到if語句中執行
2、rewrite是執行url重寫操作
3、^/(.*)([^/])$表示以/符號開始並緊跟著任何字元,同時不是以/為結束的字串,在我的url中,(.*)表示的ww,([^/])表示的w
4、 表示的重寫後的地址,$host是請求的域名,$1是前面第一個括號裡的內容ww,在我的url裡就是wordpres $2是前面第二個括號裡的內容,在我的url裡是w
5、permanent表示,返回永久重定向的HTTP狀態301
六 Nginx Location
1.基本語法:[和上面rewrite正則匹配語法基本一致]
location [=|~|~*|^~] /uri/ { … }
* ~ 為區分大小寫匹配
* ~* 為不區分大小寫匹配
* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
示例1:
location = / {
# matches the query / only.
# 只匹配 / 查詢。
}
匹配任何查詢,因為所有請求都已 / 開頭。但是正規表示式規則和長的塊規則將被優先和查詢匹配
示例2:
location ^~ /images/ {
# 匹配任何以 /images/ 開頭的任何查詢並且停止搜尋。任何正規表示式將不會被測試。
示例3:
location ~* \.(gif|jpg|jpeg)$ {
}
# 匹配任何以gif、jpg 或 jpeg 結尾的請求。
1.基本語法:[和上面rewrite正則匹配語法基本一致]
location [=|~|~*|^~] /uri/ { … }
* ~ 為區分大小寫匹配
* ~* 為不區分大小寫匹配
* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
示例1:
location = / {
# matches the query / only.
# 只匹配 / 查詢。
}
匹配任何查詢,因為所有請求都已 / 開頭。但是正規表示式規則和長的塊規則將被優先和查詢匹配
示例2:
location ^~ /images/ {
# 匹配任何以 /images/ 開頭的任何查詢並且停止搜尋。任何正規表示式將不會被測試。
示例3:
location ~* \.(gif|jpg|jpeg)$ {
}
# 匹配任何以gif、jpg 或 jpeg 結尾的請求。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30129545/viewspace-1435210/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 盜版者利用蘋果技術漏洞 釋出破解版iPhone應用蘋果iPhone
- 量化技術分析應用
- 無線技術應用
- 前端技術分享:Nginx負載均衡影片,基礎的實戰應用前端Nginx負載
- Embedding技術與應用(3):Embeddings技術的實踐應用
- 區塊鏈技術應用開發、區塊鏈版權應用搭建解決方案區塊鏈
- 如何快速應用機器學習技術?機器學習
- 混合應用技術選型
- javaweb中應用urlrewrite技術JavaWeb
- IT應用技術趨勢展
- 雲技術應用探討
- java反射技術的應用Java反射
- WMI技術的應用 (轉)
- 《51微控制器C語言應用開發技術大全 (第二版) 劉坤》pdf 附下載連結C語言
- NLPIR技術運用知識圖譜技術應用於智慧金融
- VR技術用於學前教育 VR技術的跨界應用!VR
- 技術人員應真正學會的第二課程
- 新技術應用也應與業務匹配
- 人臉識別技術應用
- flashback閃回技術應用解析
- SOA技術標準的應用
- 音影片技術原理及應用
- 進階 Redis 技術與應用Redis
- 區塊鏈技術應用於版權領域從何說起?區塊鏈
- 資料加密新技術-實時雲渲染技術應用加密
- 江蘇省第二屆資料安全技術應用職業技能競賽初賽WP
- 舒琴:技術人員應真正學會的第二課
- 【應用技術】AM335x串列埠技術分析串列埠
- 超詳細Maven技術應用指南Maven
- 區塊鏈技術入門應用區塊鏈
- 大資料技術原理與應用大資料
- 分析技術在PMP中的應用
- LoadRunner關聯技術的應用
- 網路爬蟲技術及應用爬蟲
- 後 App 時代的輕應用技術APP
- 分散式賬本技術的應用分散式
- LUKS加密卷應用技術簡介加密
- SpEL應用實戰|得物技術