0916~0919_開學季語言展

一手掌握短小精悍的Nginx

達洋貓《櫻花樹》一卡通

達洋貓《櫻花樹》一卡通

【開學大作戰】一卡通全面限時9折起

  • 9 441
    490

活動訊息

想找書的時候,特別想偷看網友的書櫃... 原來大家都在看這本 ↓↓↓

用閱讀開啟視野,讓書成為照亮你人生的光
【金石堂選書】本月推薦您這些好書👉 快來看看

內容簡介

2013120411999

Nginx已應用在Netflix、Wordpress.com、新浪、網易、騰訊、豆瓣等知名網站中。

Nginx是一款功能強大的高性能Web和反向代理伺服器,可以在大多數UNIX或類UNIX系統上編譯運行,官方還提供Windows下的可執行版本。

本書是作者多年研讀Nginx代碼、深入思考和實踐的結晶,希望透過剖析Nginx的原始程式碼,探究其功能結構及其內部實現原理。

適合:系統程式師、軟體發展工程師、Nginx高級運維工程師、資訊科系學生參考。

作者

高群凱

電腦碩士,接觸Linux等自由/開源軟體多年,在技術領域的興趣主要包括Linux、高性能服務(如Lighttpd、Nginx、Apache、Mongodb等),以及x86、MIPS(Cavium、RMI、Tilera)等,專職從事Linux相關研究。

個人微博:lenky.info/

目錄

前言

Chapter01 原始程式分析的準備工作
1.1 主要特性 
1.2 原始程式下載  
1.3 原始程式目錄結構  
1.4 原始程式分析工具 
1.5 測試輔助工具  
1.6 編譯與執行  
1.7 其他準備 

Chapter02 追蹤與偵錯
2.1 利用gdb 偵錯  
2.2 利用記錄檔資訊追蹤Nginx  
2.3 利用strace/pstack 偵錯Nginx  
2.4 獲得Nginx 程式完整執行流程 
2.5 額外偵錯  
2.6 特殊應用邏輯的偵錯

Chapter03 處理程序模型
3.1 整體架構  
3.2 核心處理程序模型  
3.3 Cache 處理程序模型    
3.4 處理程序通訊 
3.5 共用記憶體  
3.6 slab 機制  
3.7 訊號處理  

Chapter04 資料結構
4.1 記憶體池  
4.2 Hash 
4.3 Radix tree 

Chapter05 設定解析
5.1 設定檔格式  
5.2 設定項目解析準備  
5.3 設定檔解析流程  
5.4 設定資訊組織結構  
5.5 設定資訊的繼承 

Chapter06 模組綜述
6.1 Handler 模組  
6.2 Filter 模組  
6.3 Upstream 模組  
6.4 Load-balance 模組 

Chapter07 事件管理機制
7.1 I/O 多工模型 
7.2 epoll 模型  
7.3 事件處理  
7.4 負載平衡   
7.5 逾時管理 

Chapter08 變數機制
8.1 初識變數 
8.2 支撐機制  
8.3 指令稿引擎 
8.4 執行順序 

Chapter09 請求處理與回應
9.1 建立監聽Socket 埠  
9.2 建立連接Socket 埠  
9.3 請求處理 
9.4 資料回應 
9.5 子請求  
9.6 連接關閉   

Chapter10 請求定位
10.1 Location 的產生 
10.2 Location 的整理  
10.3 Server 的定位  
10.4 Location 的定位與使用  
10.5 未命名location 的使用  
10.6 try_file s 指令 

Chapter11 動態頁面請求處理
11.1 測試環境 
11.2 用戶端發起PHP 請求  
11.3 請求轉發   
11.4 資料回應   

Chapter12 過濾模組
12.1 ngx_http_not_modified_filter_module  
12.2 ngx_http_headers_filter_module    
12.3 ngx_http_gzip_filter_module  
12.4 ngx_http_range_filter_module  

Chapter13 負載平衡
13.1 負載平衡策略  
13.2 加權輪詢  
13.3 IP 雜湊   
13.4 兩種策略比較 

Chapter14 存取控制
14.1 禁止指定IP 存取  
14.2 密碼認證存取  
14.3 其他存取控制措施 

附錄A  
附錄B  
附錄C

序/導讀

前言

Nginx原始程式研究是早在2008 年的事情。當時我正為職業規劃與未來發展困惑不已,一籌莫展之際不知從哪裡得知高性能伺服器是一個很有「前途」的努力方向,幾經搜索又機緣偶合地得識Lighttpd與Nginx。在逐步了解和熟悉它們的原始程式後,我開始感到自己的無知與淺薄,發現原來程式也可以寫得如此優雅。

Nginx提供了一個安全、快速並且靈活的Web Server環境。與其他Web Servers相比,其主要特點是佔有系統資源少、平行處理能力強、穩定性好,這些都是吸引網站架構人員特別關心以及廣泛應用的極大優點。然而,對於開發工程師而言,更有吸引力的地方卻是Nginx 是怎樣做到如此強勁的功能與效能的,這從網際網路上存在大量的Nginx原始程式分析的部落格文章與討論區發文可見一斑。

既然網際網路上已有大量的Nginx原始程式分析文章,那我現在撰寫這本書是否多此一舉?我會說不是,畢竟它較為完整地整理了Nginx的相關核心流程。當然,這只是我列出的答案,最後還需要各位讀者來回答。本書的原始素材是我在最近幾年對Nginx程式分析時斷斷續續地所做的筆記,只不過之前寫的筆記過細地逐行註釋程式,導致文件中充斥大量的程式。這次重新整理後,希望能從比較高的角度去解析Nginx,把握全域,弄清楚整體實現原理而非陷入細節。我認為只要看清楚了Nginx整體的實現原理,對於一時間沒有觸及到的細節,在真正遇到那個點時再去了解也是毫不費力,最多只不過還需去查一下Man手冊,了解一下系統API而已。授人以魚不如授人以漁,為了達到這個目標,本書儘量少貼程式多畫圖,當然一些必要的程式仍然是不可或缺的,所以讀者還是會在本書看到原始程式碼。雖然我的最初出發點是好的,但是在解析Nginx的某些功能時,我的確遇到了困難,特別是在解析到一大片程式卻並沒有孰輕孰重的情況下,實在讓我很糾結,把程式全部貼上將占去大量的版面,違背我少貼程式的初衷,不貼上又怕讀者不知我所云何物而看不懂。這不僅是因為Nginx程式本身的耦合性較大,也在於我個人的文字描述能力有待加強,還請各位讀者多多包涵。

適合讀者群

我面試過不少剛大學或所究所畢業的應屆生,問得比較多的一句是:寫過實際應用的程式嗎?答:沒有。我又問:看過什麼優秀的開放原始程式碼嗎?答:沒有。這種情況很糟糕。限於國內大學的環境,除了較為簡單的課程設計以外,很多大學生在校園內很少有機會寫程式或參與實作問題的解決。於針對這一點,至少我們可以去看一些有價值的優秀開放原始程式碼,畢竟在大學校園裡,我們有時間、有地點、有資源(教室、圖書館、電子閱覽室等)。所謂他山之石,可以攻玉,在了解這些開放原始程式碼的過程中,我們甚至可以嘗試寫一些擴充功能模組,逼迫自己去主動學習,培養紮實的理論基礎知識,鍛煉實際的動手程式設計能力,自己也會因此逐步成長許多。

本書的另一目標讀者群為軟體開發工程師,這是顯而易見的事情。短小精悍的Nginx實現了如此強大的HTTP服務、反向代理服務以及郵件代理服務等,這些功能值得每一位軟體開發工程師去學習和研究,況且也有不少專案在對Nginx進行延伸開發或移植整合,有一本能幫助開發工程師快速開展工作的書籍也許能加快專案進度。

另外,鑑於對Nginx的廣泛使用,雖然Nginx 官網上有不少針對設定使用的文件,但是限於文字描述的簡潔性與文件更新的落後性,對於運行維護工程師而言,一些設定指令的使用是靠逐步驗證來判斷其實際使用用法的。透過本書的介紹,我們能從原始程式碼上去找對應設定指令的用法並了解其真實的實際功能,即它讓原始程式碼本身就變成一本設定使用手冊。所以,對於那些具有強烈意願知其然又知其所以然的進階運行維護工程師,本書也是一個不錯的選擇。

我假設本書的讀者已經熟練了C 語言,並且對Linux系統有某種程度的了解。不過,即使讀者在這些方面存在一些不足也無關緊要,我會盡可能地把相關擴充連結標記出來,讀者查詢一下相關資料即可。

本書的適合讀者群主要是以下三種:在校大學生;軟體開發工程師;Nginx進階運行維護工程師。

本書的相關網站

我維護了一個包含本書相關資訊的網站:lenky.info/ngx_book/,其中主要包含了本書的勘誤表、內容擴充和修改;如果讀者有關於本書或Nginx 的任何問題,都可以在此頁面進行留言,我會儘量經常檢視並且及時回覆讀者提出的相關問題。另外,我的個人電子電子郵件為:lenky0401@gmail.com。

作為本書的作者,我以兢兢業業的態度力求做到準確無誤,但限於時間倉促和個人功力,書中難免會有一些紕漏、筆誤,有敘述不清楚的地方,請各位讀者和同行多多包涵,如果能提出寶貴的意見,我將洗耳恭聽,感激不盡。最後,也請大家關注一下上面提到的網址,有任何問題,我都會及時在那公佈。

配送方式

  • 台灣
    • 國內宅配:本島、離島
    • 到店取貨:
      金石堂門市 不限金額免運費
      7-11便利商店 ok便利商店 萊爾富便利商店 全家便利商店
  • 海外
    • 國際快遞:全球
    • 港澳店取:
      ok便利商店 順豐 7-11便利商店

詳細資料

詳細資料

    • 語言
    • 中文繁體
    • 裝訂
    • 紙本平裝
    • ISBN
    • 9789863794370
    • 分級
    • 普通級
    • 頁數
    • 424
    • 商品規格
    • 23*17
    • 出版地
    • 台灣
    • 適讀年齡
    • 全齡適讀
    • 注音
    • 級別

商品評價

訂購/退換貨須知

加入金石堂 LINE 官方帳號『完成綁定』,隨時掌握出貨動態:

加入金石堂LINE官方帳號『完成綁定』,隨時掌握出貨動態
金石堂LINE官方帳號綁定教學

提醒您!!
金石堂及銀行均不會請您操作ATM! 如接獲電話要求您前往ATM提款機,請不要聽從指示,以免受騙上當!

退換貨須知:

**提醒您,鑑賞期不等於試用期,退回商品須為全新狀態**

  • 依據「消費者保護法」第19條及行政院消費者保護處公告之「通訊交易解除權合理例外情事適用準則」,以下商品購買後,除商品本身有瑕疵外,將不提供7天的猶豫期:
    1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮食品)
    2. 依消費者要求所為之客製化給付。(客製化商品)
    3. 報紙、期刊或雜誌。(含MOOK、外文雜誌)
    4. 經消費者拆封之影音商品或電腦軟體。
    5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書、電子雜誌、下載版軟體、虛擬商品…等)
    6. 已拆封之個人衛生用品。(如:內衣褲、刮鬍刀、除毛刀…等)
  • 若非上列種類商品,均享有到貨7天的猶豫期(含例假日)。
  • 辦理退換貨時,商品(組合商品恕無法接受單獨退貨)必須是您收到商品時的原始狀態(包含商品本體、配件、贈品、保證書、所有附隨資料文件及原廠內外包裝…等),請勿直接使用原廠包裝寄送,或於原廠包裝上黏貼紙張或書寫文字。
  • 退回商品若無法回復原狀,將請您負擔回復原狀所需費用,嚴重時將影響您的退貨權益。
金石堂門市 全家便利商店 ok便利商店 萊爾富便利商店 7-11便利商店
World wide
活動ing