Loading comments...Loading comments...
Nginx是甚麼?
Nginx是一款高性能的Web服務器和反向代理服務器.最初由Igor Sysoev編寫,可以作為HTTP SERVER使用,也可以作為負載均衡器、HTTP緩存和反向代理服務器使用.Nginx採事件驅動的異步架構,可以支持高併發和大規模的Web流量.
底層為 linux 異步非阻塞網路I/O模型.(高併發),支持gzip壓縮. =>Web服務器,WWW服務器,HTTP服務器,web信息展示,被動式的接收到請求後,才會回應當前請求內容.
- 3萬個tcp/ip連結下,消耗內存不到150兆
企業或服務拿Nginx來幹嗎?
- 網頁展示
- 提供多個域名的網頁服務
- 提供反向代理服務
- 提供簡單資源下載服務 (FTP)
- 用戶行為分析
Nginx的運行架構
多進程,調用多個cpu解析用戶請求.可針對進程數量去設置cpu數量.
默認使用root用戶創建master進程,透過master再創建多個worker進程.
- master進程
監聽 ip.port 0.0.0.0:80 被動等待用戶發來連接請求,nginx的主進程工作狀態.
用於管理資源.
- worker進程
1.實際處理用戶發來請求
2.master根據nginx.conf裡的配置參數有幾個worker
3.用戶請求來時,worker之間會有一個競爭狀態,勝利者可以與客戶端建立連線.
4.當worker接受到用戶請求後,如需向後反向代理給後端,會經過一層層分析後返回給用戶.
Nginx的有用指令
Nginx語法規則
- 配置文件由指令與指令塊構成;
- 每條指令以 ; 分號結尾,指令與參數間以空格符號分隔;
- 指令塊以 {} 大括號將多條指令組織在一起;
- include 語句允許組合多個配置文件以提升可維護性;
- 使用 # 符號添加注釋,提高可讀性;
- 使用 $ 符號使用變量;
- 部分指令的參數支援正則表達式;
- 大多數指令都有預設值,如果沒有明確設定,將使用預設值。
- Nginx 的配置文件是順序讀取的,即後面的指令會覆蓋前面的指令。
- 指令可以使用變量,這些變量可以是預定義的變量,也可以是自定義的變量。
- 指令參數支援一些特殊字符,如 $、@、#、/、~ 等。這些字符在配置文件中有特殊的含義。
- 使用 include 指令可以將其他配置文件中的指令包含到當前配置文件中,以便提高可維護性。
- 注釋可以使用 # 或 // 符號添加。注釋可以位於行的開頭或指令的末尾,但不能位於指令的中間。
- 部分指令的參數支援正則表達式,如 location 指令中的正則表達式用於匹配 URL 路徑。正則表達式的語法和用法與其他語言中的正則表達式相同。
Nginx的配置文件詳解
使用上遇到的問題
部屬此部落格時,因為較不熟悉Nginx的部屬配置,發現reload網頁時就會發生框架啟動失敗的問題,原本以為是自己的Docker進入點寫錯,後來詢問後端朋友,表示設定並未出錯,詢問了網站部屬方的工程師後,發現只是一個location刷新空白的導頁錯誤= =,差點沒把自己氣歪XD
以下是Vue的範本,擷取至Nginx常用的基礎配置一文