本書主要講解了Nginx 在反向代理和應用開發中的作用,閱讀本書可以了解Nginx 在互聯網開發中扮演的多個角色,充分利用這些角色的各項功能有助于提升服務的整體性能。本書所介紹的大部分功能是通過Nginx+Lua 進行開發和配置的,但并不要求讀者精通Lua,在必要的位置,本書會對Lua 進行選擇性講解。涉及實戰的內容會有配套源碼,方便讀者學習和使用。本書適合廣大運維人員和開發人員學習,對使用Nginx 完成各種服務架構感興趣的架構師也可以閱讀本書。閱讀本書需要有對Nginx 的初級或中級配置經驗。
·王力·折800運維架構師,Nginx開發工程師,具有多年互聯網相關項目的開發經驗。喜歡使用小眾技術完成運維、開發和測試任務,擅長通過架構設計降低開發難度,擅長搭建Nginx高性能服務。·湯永全·折800運維主管,具有多年互聯網相關項目的運維工作經驗。歷經傳統運維和互聯網運維,一步一個腳印,積累了不少運維相關的經驗和感悟。活躍于成都運維管理人員的線下組織“運維羅漢堂”。
第1 章 Nginx 學前必知................................................................................................................................. 1
1.1 HTTP 請求報文................................................................................................................................. 1
1.2 HTTP 響應報文................................................................................................................................. 2
1.3 安裝Nginx......................................................................................................................................... 2
1.4 支持HTTPS....................................................................................................................................... 4
1.5 添加模塊............................................................................................................................................ 4
1.6 小結..................................................................................................................................................... 4
第2 章 基礎配置............................................................................................................................................. 5
2.1 Nginx 指令和指令塊........................................................................................................................ 5
2.2 Nginx 基本配置說明........................................................................................................................ 6
2.2.1 main 配置.................................................................................................................................. 6
2.2.2 與客戶端有關的配置............................................................................................................... 7
2.2.3 server 塊..................................................................................................................................... 7
2.2.4 location 塊.................................................................................................................................. 8
2.3 include 的使用................................................................................................................................... 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.2 auth 身份驗證...........................................................................................................................21
3.3.3 利用LDAP 服務加強安全......................................................................................................22
3.3.4 satisfy 二選一的訪問限制功能...............................................................................................23
3.4 proxy 代理.........................................................................................................................................23
3.4.1 proxy_pass 請求代理規則........................................................................................................24
3.4.2 減少后端服務器的網絡開銷...................................................................................................24
3.4.3 控制請求頭和請求體..............................................................................................................25
3.4.4 控制請求和后端服務器的交互時間.......................................................................................26
3.5 upstream 使用手冊..........................................................................................................................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.6 rewrite 使用手冊..............................................................................................................................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 日志存儲......