Nginx配置檔案的語法格式
在nginx的世界裡,每個Nginx模組都可以定義自己的配置指令,所以這些指令的格式五花八門。比如content_by_lua_block後跟著的是Lua語法,limit_req_zone後則跟著以空格、等號、冒號等分隔的多個選項。這些模組有沒有必然遵循的通用格式呢?如果有,那麼掌握了它,就能快速讀懂生產環境複雜的nginx.conf檔案。今天便來講解Nginx配置檔案的語法格式。
Nginx是由少量框架程式碼、大量模組構成的,其中,Nginx框架會按照特定的語法,將配置指令讀取出來,再交由模組處理。因此,Nginx框架定義了通用的語法規則,而Nginx模組則定義了每條指令的語法規則,作為初學者,如果將學習目標定為掌握所有的配置指令,方向就完全錯了,而且這是不可能完成的任務。
比如,ngx_http_lua_module模組定義了content_by_lua_block指令,只要它符合框架定義的{}塊語法規則,哪怕大括號內是一大串Lua語言程式碼,框架也會把它交由ngx_http_lua_module模組處理。因此,下面這行指令就是合法的:
content_by_lua_block {ngx.say("Hello World ")}
所以,在我看來,只要弄清楚了以下2點,就能快速掌握Nginx配置檔案,:
第一點:Nginx框架定義了每條指令的基本格式,這是所有模組必須遵守的規則,這包括以下5條語法:
透過{ }大括號作為分隔符的配置塊語法。比如http{ }、location{ }、upstream{ }等等,至於配置塊中究竟是放置Javascript語言、Lua語言還是字串、數字,這完全由定義配置塊的Nginx模組而定。
透過;分號作為分隔符的指令語法。比如root html;就開啟了靜態資源服務。
以#作為關鍵字的註釋語法。比如#pid logs/nginx.pid;指令就是不會生效的。
以$作為關鍵字的變數語法。變數是Nginx模組之間能夠互相配合的核心要素,也是Nginx與管理員之間的重要介面,透過$變數名的形式,就可以靈活控制Nginx模組的行為。
include指令可以將其他配置檔案載入到nginx.conf中,這樣可以提升配置的可維護性。例如include mime.types;語句,就將Content-Type與檔案字尾名的對映關係,放在了獨立的mime.types檔案中,降低了耦合性。
第二點:Nginx框架為了提高模組解析指令選項的效率,提供了一系列通用的工具函式,絕大多數模組都會使用它們,畢竟這降低了模組開發的難度以及使用者的學習成本。比如,當配置檔案中包含位元組數時,Nginx框架提供了ngx_conf_set_size_slot函式, 各模組透過它就可以解析以下單位:
因此,limit_req_zone指令中zone=one:10m中就定義10MB的共享記憶體,這替代了很不好理解的10485760位元組。
再比如,讀取時間可以使用以下單位:
這樣,ssl_session_cache shared:SSL:2h;指令就設定TLS會話資訊快取2小時後過期。
除以上規則外,如果編譯了pcre開發庫後,你還可以在nginx.conf中使用正規表示式,它們通常以~符號打頭。
由於每個Nginx模組都能定義獨特的指令,這讓nginx.conf變成了複雜的運維介面。在掌握了基本的配置語法,以及第三方模組定義指令時遵循的潛規則後,你就能遊刃有餘地編寫Nginx配置檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25922618/viewspace-2749615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nginx配置檔案語法高亮的Sublime Text擴充套件Nginx套件
- nginx rewrite語法格式Nginx
- nginx配置檔案Nginx
- Nginx 配置檔案Nginx
- logstash 配置檔案語法介紹
- Nginx的配置檔案說明Nginx
- Nginx的配置檔案詳解Nginx
- Gixy–分析Nginx配置檔案的工具Nginx
- Nginx 配置檔案 nginx.conf 中文詳解Nginx
- nginx.conf 配置檔案詳解Nginx
- Nginx 配置檔案引數詳解Nginx
- openresty/nginx配置多個conf檔案RESTNginx
- nginx 基本命令和檔案配置Nginx
- nginx日誌配置檔案說明Nginx
- nginx製作檢查配置bat檔案NginxBAT
- nginx 文件地址及配置檔案入門Nginx
- Python 中常見的配置檔案寫法Python
- supervisor監管的配置檔案寫法
- Linux下玩轉nginx系列(二)——nginx配置檔案說明LinuxNginx
- Nginx基礎02:配置檔案nginx.conf(Part1)Nginx
- YAML檔案語法及示例YAML
- 透過nginx配置檔案抵禦攻擊Nginx
- Python中常見的配置檔案寫法分享!Python
- Xpath語法格式整理
- Nginx學習系列三Nginx的啟動、停止、修改配置檔案後重啟Nginx
- nginx同一埠配置代理不同路徑下的檔案Nginx
- nginx的配置檔案server_name的意義 location意義NginxServer
- SpringBoot配置檔案使用yml格式時報錯,使用properties格式時正常Spring Boot
- Nginx目錄結構與配置檔案詳解Nginx
- Nginx配置檔案詳解與優化建議Nginx優化
- Linux下玩轉nginx系列(三)---nginx日誌配置檔案說明LinuxNginx
- 檔案開啟的格式
- vscode如何更改檔案語言模式為json格式VSCode模式JSON
- vuepress專案 配置/使用/部署 markdown語法Vue
- .md,markdown檔案的基本常用編寫語法
- elf檔案格式
- FastQ檔案格式AST
- smali 檔案格式