Nginx综合介绍以及配置文件详解
Nginx介紹(事件驅動框架和異步處理)
Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;Nginx可以作為一個HTTP服務器進行網站的發(fā)布處理,另外Nginx可以作為反向代理進行負載均衡的實現(xiàn)。Nginx具有高性能、高并發(fā)和低內存占用的特點,成為最主流的反向代理服務器。
功能應用介紹
Nginx由內核和模塊組成,完成工作是通過查找配置文件將客戶端請求映射到一個location block(location是用于URL匹配的命令),location配置的命令會啟動不同模塊完成工作 Nginx架構模塊介紹
模塊分類:
- 核心模塊:HTTP模塊、EVENT模塊(事件)、MAIL模塊。
- 基礎模塊:HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊、HTTP Rewrite模塊。
- 第三方模塊:HTTP Upstream Request Hash模塊、Notice模塊、HTTP Access Key模塊。
應用場景
| 靜態(tài)資源服務器 | Http服務器,虛擬主機, 動靜分離,讓動態(tài)網站里的動態(tài)網頁根據(jù)一定規(guī)則把不變的資源和經常變的資源區(qū)分開來,動靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點將其做緩存操作,這就是網站靜態(tài)化處理的核心思路 | root實際訪問文件路徑會拼接URL中的路徑 alias實際訪問文件路徑不會拼接URL中的路徑 |
| 反向代理 | 簡單來說就是真實的服務器不能直接被外部網絡訪問,所以需要一臺代理服務器,而代理服務器能被外部網絡訪問的同時又跟真實服務器在同一個網絡環(huán)境,當然也可能是同一臺服務器,端口不同而已 | |
| 正向代理 | 意思是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發(fā)送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端 代理可解決跨域問題 | |
| 動態(tài)匹配 | location 后可通過正則表達式進行匹配相應的請求,并對匹配的內容進行相關操作 | = 表示精確匹配。只有請求的url路徑與后面的字符串完全相等時,才會命中(優(yōu)先級最高)。^~ 表示如果該符號后面的字符是最佳匹配,采用該規(guī)則,不再進行后續(xù)的查找。~ 表示該規(guī)則是使用正則定義的,區(qū)分大小寫。~* 表示該規(guī)則是使用正則定義的,不區(qū)分大小寫。 |
| 負載均衡 | 當有2臺或以上服務器時,根據(jù)規(guī)則隨機的將請求分發(fā)到指定的服務器上處理,負載均衡配置一般都需要同時配置反向代理,通過反向代理跳轉到負載均衡(Nginx目前支持自帶3種負載均衡策略,還有2種常用的第三方策略) | RR(默認,逐一分配)權重(指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況)ip_hash(iphash的每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題)fair(按后端服務器的響應時間來分配請求,響應時間短的優(yōu)先分配)url_hash(按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。) |
| Gzip壓縮 | 規(guī)定的三種標準HTTP壓縮格式之一,對于文本文件,GZip 的效果非常明顯,開啟后傳輸所需流量大約會降至 1/4 ~ 1/3 | |
| 動態(tài)匹配 | ||
| IP限制 | 在location下結合 allow deny 指定限制IP訪問 | |
| 限流 | Nginx自身有的請求限制模塊ngx_http_limit_req_module、流量限制模塊ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定義調節(jié)限流,實現(xiàn)基本的限流控制 | |
| 適配PC或移動設備 | Nginx通過內置變量$http_user_agent 在location動態(tài)匹配內容內進行判斷 | if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {} |
| 自定義錯誤頁和訪問設置 | error_page 500 502 503 504 /50x.html; error_page 404 xxxx.com; |
配置文件
配置文件結構如下圖:
events { }http {server{ location path{...}location path{...}}server{...}} 復制代碼重點講解一下匹配規(guī)則和路徑重寫
1. 匹配規(guī)則(location)
location [=|~|~*|^~] /uri/ { … } 復制代碼- = 嚴格匹配。如果請求匹配這個location,那么將停止搜索并立即處理此請求
- ~ 區(qū)分大小寫匹配(可用正則表達式)
- ~* 不區(qū)分大小寫匹配(可用正則表達式)
- ^~ 如果把這個前綴用于一個常規(guī)字符串,那么告訴nginx 如果路徑匹配那么不測試正則表達式
- !~ 區(qū)分大小寫不匹配
- !~* 不區(qū)分大小寫不匹配
2. 路徑重寫(rewrite)
可支持正則表達式 特殊關鍵字:rewrite … permanent 永久性重定向,請求日志中的狀態(tài)碼為301rewrite … redirect 臨時重定向,請求日志中的狀態(tài)碼為302last 使用了last 指令,rewrite 后會跳出location 作用域,重新開始再走一次剛才的行為break 使用了break 指令,rewrite后不會跳出location 作用域,它的生命也在這個location中終結 復制代碼由于文章篇幅問題就不一一列舉了,需要了解的小伙伴可參照鏈接[rewrite詳細規(guī)則],在服務器上自行測試(www.cnblogs.com/netsa/p/681…)
具體配置文件結構或者使用的配置文件說明
- main:nginx的全局配置,對全局生效
- events:配置影響nginx服務器或與用戶的網絡連接
- http:可以嵌套多個server,配置代理,緩存,日志定義等絕大多數(shù)功能和第三方模塊的配置
- server:配置虛擬主機的相關參數(shù),一個http中可以有多個server
- location:配置請求的路由,以及各種頁面的處理情況
- upstream:配置后端服務器具體地址,負載均衡配置不可或缺的部分
- Nignx狀態(tài)監(jiān)控
- 反向代理
- 負載均衡
- URL重寫
- IP限制
如何使用第三方模塊以及源碼編譯Nginx使用,后續(xù)再一邊實踐一邊記錄分享給大家
養(yǎng)成看日志的習慣
常見問題
-
No mapping for the Unicode character exists in the target multi-byte code page
解壓的路徑里面包含有中文的緣故 復制代碼 -
bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
80端口被占用,<SQL Server Reporting Services (MSSQLSERVER)>/<World Wide Web Publishing Service> 關閉SQL/IIS 復制代碼
相關學習鏈接
-
Nginx驅動模型
-
常用的功能詳細介紹
-
rewrite規(guī)則
總結
以上是生活随笔為你收集整理的Nginx综合介绍以及配置文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flutter 动画组件
- 下一篇: 万维网联盟