新到貨2本75折
Nginx實戰:基於Lua語言的配置、開發與架構詳解

Nginx實戰:基於Lua語言的配置、開發與架構詳解

  • 定價:474
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

《Nginx實戰:基於Lua語言的配置、開發與架構詳解》主要講解了Nginx在反向代理和應用開發中的作用,閱讀本書可以瞭解Nginx在互聯網開發中扮演的多個角色,充分利用這些角色的各項功能有助於提升服務的整體性能。《Nginx實戰:基於Lua語言的配置、開發與架構詳解》所介紹的大部分功能是通過Nginx+Lua進行開發和配置的,但並不要求讀者精通Lua,在必要的位置本書會對Lua進行選擇性講解。涉及實戰的內容會有配套源碼,方便讀者學習和使用。
 
《Nginx實戰:基於Lua語言的配置、開發與架構詳解》適合廣大運維人員和開發人員學習,對使用Nginx完成各種服務架構感興趣的架構師也可以閱讀《Nginx實戰:基於Lua語言的配置、開發與架構詳解》。閱讀本書需要有Nginx初級或中級配置經驗。
 

作者介紹

王力

折800運維架構師,Nginx開發工程師,具有多年互聯網相關專案的開發經驗。喜歡使用小眾技術完成運維、開發和測試任務,擅長通過架構設計降低開發難度,擅長搭建Nginx高性能服務。

湯永全

折800運維主管,具有多年互聯網相關專案的運維工作經驗。歷經傳統運維和互聯網運維,一步一個腳印,積累了不少運維相關的經驗和感悟。活躍于成都運維管理人員的線下組織“運維羅漢堂”。
 

目錄

第1章 Nginx學前必知1
1.1HTTP請求報文1
1.2HTTP回應報文2
1.3安裝Nginx2
1.4支持HTTPS4
1.5添加模組4
1.6小結4

第2章 基礎配置5
2.1Nginx指令和指令塊5
2.2Nginx基本配置說明6
2.2.1Main配置6
2.2.2與用戶端有關的配置7
2.2.3server塊7
2.2.4location塊8
2.3include的使用9
2.4常見配置9
2.4.1常見配置注解10
2.4.2常見配置實戰技巧11
2.5內置變數13
2.5.1常見內置變數13
2.5.2常見內置變數實戰技巧15
2.6小結16

第3章 強化基礎配置17
3.1牢記Context標識17
3.2獲取請求的IP位址18
3.2.1獲取用戶的真實IP地址18
3.2.2防止IP地址偽造19
3.2.3後端伺服器對IP地址的需求19
3.3管理請求的行為20
3.3.1限制IP位址的訪問20
3.3.2auth身份驗證21
3.3.3利用LDAP服務加強安全22
3.3.4satisfy二選一的訪問限制功能23
3.4proxy代理23
3.4.1proxy_pass請求代理規則24
3.4.2減少後端伺服器的網路開銷24
3.4.3控制請求頭和請求體25
3.4.4控制請求和後端伺服器的交互時間26
3.5upstream使用手冊26
3.5.1代理多台伺服器27
3.5.2容錯移轉28
3.5.3負載均衡29
3.5.4通過hash分片提升緩存命中率29
3.5.5利用長連接提升性能30
3.5.6利用resolver加速內部功能變數名稱訪問31
3.6rewrite使用手冊32
3.6.1內部重定向32
3.6.2功能變數名稱跳轉33
3.6.3跳轉POST請求34
3.6.4設置變數的值34
3.7限速白名單35
3.8日誌36
3.8.1記錄自訂變數36
3.8.2日誌格式規範36
3.8.3日誌存儲37
3.9HTTP執行階段38
3.10小結39

第4章 常用模組精解40
4.1定制HTTP頭信息40
4.1.1使用ngx_http_headers_module設置回應頭40
4.1.2使用headers-more-nginx控制請求頭和回應頭43
4.2協力廠商模組set-misc-nginx45
4.2.1設置變數46
4.2.2防止SQL注入46
4.2.3字串非轉義和轉義47
4.2.4基於鍵值的集群分片48
4.2.5base編碼48
4.2.6md5編碼50
4.2.7生成亂數50
4.2.8本地時間的輸出52
4.2.9實戰經驗52
4.3圖片的處理53
4.3.1image_filter圖片處理53
4.3.2採用漸進式方式打開JPEG圖片55
4.3.3WebP格式56
4.3.4優化圖片56
4.3.5實戰經驗:動態切圖58
4.4TCP和UDP代理58
4.4.1代理配置說明58
4.4.2DNS服務的反向代理62
4.4.3MySQL集群代理配置62
4.4.4實戰經驗63
4.5常用模組介紹63
4.5.1基於訪問IP位址跳轉到對應城市63
4.5.2修改回應內容65
4.5.3零圖元檔的生成及其作用66
4.5.4圖片的防盜鏈67
4.6小結68

第5章 緩存系統69
5.1緩存配置說明69
5.2控制緩存有效期71
5.3性能優化72
5.3.1緩存未命中的最佳實踐72
5.3.2橫向擴展最佳實踐75
5.3.3避免硬碟I/O阻塞76
5.3.4集群模式77
5.4高可用方案77
5.5proxy_cache配置範本78
5.6小結81

第6章 引入Lua82
6.1為什麼要引入Lua82
6.2Lua和LuaJIT83
6.3環境搭建83
6.4Lua的資料類型84
6.5運算式89
6.6變數93
6.7流程控制95
6.8函數98
6.9模組100
6.10Lua常見操作102
6.11引入Lua的插曲104
6.12小結105

第7章 Lua-Nginx-Module常用指令106
7.1Nginx和OpenResty106
7.2安裝Ngx_Lua107
7.3牢記Context標識108
7.4Helloworld108
7.5避免I/O阻塞109
7.6定義模組搜索路徑109
7.7讀/寫Nginx的內置變數110
7.8控制請求頭111
7.9控制回應頭113
7.10讀取請求體116
7.11輸出回應體121
7.12規則運算式124
7.13子請求130
7.14獲取Nginx的環境變數135
7.15定時任務138
7.16常用指令142
7.17提升開發和測試效率149
7.18小結156

第8章 Ngx_Lua的執行階段157
8.1init_by_lua_block157
8.2init_worker_by_lua_block160
8.3set_by_lua_block165
8.4rewrite_by_lua_block168
8.5access_by_lua_block169
8.6content_by_lua_block170
8.8header_filter_by_lua_block172
8.9body_filter_by_lua_block173
8.10log_by_lua_block176
8.11Lua和ngx.ssl177
8.12Ngx_Lua執行階段177
8.13小結180

第9章 Nginx與資料庫的交互181
9.1安裝cjson181
9.2與MySQL交互183
9.3與Redis交互189
9.4與資料庫交互的常見問題194
9.5小結198

第10章 緩存利器199
10.1worker進程的共用記憶體200
10.2Lua模組下的共用記憶體209
10.3當前請求在各執行階段間的資料共用213
10.4利用共用記憶體配置動態IP位元址認證215
10.5緩存和資料庫的交互218
10.6小結228

第11章 動態管理upstream229
11.1實戰需求分析230
11.2ngx_http_dyups_module230
11.3nginx-upsync-module233
11.4基於balancer_by_lua_block的靈活控制238
11.5小結239

第12章 Nginx日誌分析系統240
12.1實戰需求分析240
12.2ngxtop即時分析241
12.3Flume方案的日誌分析243
12.4智能化nginx_log_analysis244
12.5lua-resty-logger-socket傳輸方案246
12.6時序資料庫InfluxDB249
12.7利用lua-resty-http實現API交互254
12.8提升InfluxDB性能255
12.9小結255

第13章 靜態容災系統256
13.1荊棘之路257
13.2設計之路259
13.3架構流程圖261
13.4核心代碼解說264
13.5靜態容災的智慧關閉方案267
13.6小結269

第14章 深入挖掘反向代理270
14.1驗證碼防禦中心270
14.2鑒權管理中心272
14.3並行訪問274
14.4小結281

第15章 爬蟲282
15.1區分搜尋引擎爬蟲和惡意爬蟲282
15.2應對搜尋引擎爬蟲284
15.3應對惡意爬蟲288
15.4小插曲——使用假資料迷惑惡意爬蟲290
15.5小結291

第16章 性能分析和優化292
16.1性能分析場景搭建292
16.2流量複製295
16.3各項指標分析和優化建議295
16.4檢查全域變數305
16.5小結305

第17章 值得擁有的OpenResty306
17.1OPM307
17.2使用DNS提升訪問效率309
17.3TCP和UDP服務310
17.4多層級緩存312
17.5lua-resty-core擴展313
17.6字串分割313
17.7Nginx進程管理313
17.8全域唯一識別碼UUID315
17.9“全家福”awesome-resty316
17.10OpenResty,未來!316

第18章 開發環境下的常見問題317
18.1被截斷的回應體317
18.2“邪惡”的if317
18.3“貪婪”的正則匹配318
18.4規範HTTP狀態碼319
18.5規範URL319
18.6proxy_set_header的誤操作320
18.7開發環境下的證書問題320
18.8深層次的錯誤重定向323
18.9壓測環境下的限速和短連接323
18.10小結323
 

Nginx自2004年發佈第一個公開版本以來,就因其穩定性強、配置靈活、佔用記憶體少、反向代理功能強大,而被越來越多的人喜愛和使用。隨著人們對Nginx關注度的不斷上升,Nginx有了更多的使用場景,但在大多數公司中仍然只是扮演著反向代理的角色。

筆者在折800電商平臺(以下簡稱折800)工作多年,深感對一個電商平臺來說,在成本控制和服務性能之間取得平衡是能夠可持續發展的前提之一。與同類型且流量級別相近的公司相比,折800的電腦硬體成本要低很多,這主要得益於公司對軟體技術的極致追求。在這樣的背景下,我們熱衷於研究Nginx反向代理等小眾技術,並使用Nginx實現了大量功能,極大地提升了服務的性能和靈活度。

目前,Nginx在國內的影響力還比較有限,因此很多開發人員並不瞭解Nginx的魅力,筆者寫這本書的目的就是和大家分享Nginx的使用技巧,並一起來推廣Nginx。

市面上已經有一些介紹Nginx技術的書籍,但大多偏向於對Nginx配置和原理的講解,還有一些書籍是基於C或C++來介紹Nginx模組的。這樣的書籍要求讀者對Nginx的原理和源碼有所瞭解,甚至還要有深厚的C語言或C++語言的開發功底,這對大多數初學者來說要求太高了。

怎樣才能做到既發揮出Nginx的威力,又儘量降低學習成本呢?筆者選擇使用OpenResty的核心元件,因為OpenResty是Nginx+Lua的完美結合,它既能夠實現Nginx的非同步功能,又兼有Lua的易學優勢,這樣,在使用Nginx進行開發的過程中就不需要深入瞭解Nginx的原理了(如果已經掌握了Nginx原理當然更好)。所以,與市面上的大多數同類書籍不同,本書不會過多介紹Nginx配置和原理方面的內容,學習難度較低。

近幾年來,OpenResty的熱度不斷上升,各大互聯網公司紛紛嘗試使用Nginx+Lua的開發模式,在反向代理、閘道系統、API調度服務中都能看到這種開發模式的“身影”。希望本書可以讓更多的開發人員瞭解Nginx+Lua的魅力,也讓更多技術團隊能夠合理地使用Nginx,降低硬體的投入成本,同時提升服務的性能。

本書由王力、湯永全編寫。全書內容共分18章,其中第1~5章介紹Nginx常見的配置方式,屬於Nginx的入門知識;第6~10章對Nginx+Lua核心功能進行解讀,是熟悉Nginx+Lua開發模式的必備知識;第11~18章是Nginx+Lua開發模式在實際業務中的實踐應用,是靈活運用該模式的具體體現。

感謝楊明翰、馮浩、劉凱、屈耀華對本書的支持;也感謝折800技術平臺,在這裡我得到了持續的歷練和成長。同時,感謝電子工業出版社博文視點的編輯付睿和崔志偉,他們在本書的語言表述方面給了很多建議。

本書包含了作者的技術實踐,如果你對本書內容有任何建議和疑惑,可以發電子郵件至leehomewl@gmail.com。謝謝!

王力
2018年12月
 

詳細資料

  • ISBN:9787121354601
  • 規格:平裝 / 323頁 / 16k / 19 x 26 x 1.62 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬