2010-05-29 51 views
35

我想在我的Nginx配置文件中編寫一些更復雜的條件,但是我不確定這些語法,並且找不到可以在示例基礎之外做什麼的文檔,而且我似乎也無法找到在Nginx論壇或郵件列表上。nginx conf文件是什麼語言?

例如,我有可能有unless條件嗎?

+0

請原諒我的問題,但:不是使用'除非',否定條件有什麼問題? – nc3b 2010-05-29 19:26:27

+0

我認爲這是一些有關的問題。我認爲它的目的是確定是否有一個用於nginx配置文件的詞法分析器。 – engineerDave 2012-08-08 22:53:08

回答

4

所以我是nginx的新手,並且有同樣的問題。發現上述語言的語法既是自定義的,也非常簡單。的語法是在NGINX文檔captured in a section,並在此重複爲方便起見:

nginx的包括其由配置文件中指定的指令 控制模塊。指令分爲 簡單指令和塊指令。一個簡單的指令由 組成,名稱和參數用空格分隔並以分號 (;)結尾。塊指令與簡單指令 具有相同的結構,但不是以分號結尾,而是以大括號({和})包圍的一組附加的 指令結束。如果塊指令 在花括號內包含其他指令,則它被稱爲上下文(例如: 事件,http,服務器和位置)。

置於任何上下文 之外的配置文件中的指令被認爲是在主要上下文中。這些事件和http 指令駐留在主要上下文中,http中的服務器和 服務器中的位置。

#號之後的其餘行被認爲是註釋。

總結:一切都在一個NGINX配置文件是一個指令其可引用一個可變。所有指令都是listed alphabetically here,所有變量都是listed alphabetically here。 NGINX配置由模塊驅動,每個模塊實現一定的功能,每個模塊貢獻指令和變量,可用於配置中。而已。

這就是爲什麼即使if - 它看起來像就像在傳統的編程語言中的關鍵字 - 實際上只是一個指令貢獻的ngx_http_rewrite_modulemodule

希望這會有所幫助!

PS - 還檢查了https://devdocs.io/,特別https://devdocs.io/nginx,對於改進的方式搜索/使用Nginx的文檔。

+0

如果我的回答中有任何內容是錯誤/誤導性的,以便我可以糾正它,那麼請通過評論指出 - 我的nginx知識在撰寫本文時是1天的時間(但要獲得這樣的答案還有更好的時機!) – scorpiodawg 2017-10-24 19:29:42

7

Nginx配置文件是用一種語言編寫的(如果你想稱它爲一個),它是爲Nginx配置文件設計和實現的。有可能是文檔是唯一可用的參考。我首先會在Nginx forums之一上發佈消息或加入Nginx mailing list並在此處詢問。當然,你也可以抓住源頭並從那裏開始。

祝你好運。

20

Nginx conf文件是用自己的語言或語法編寫的。我已經包含了下面的一些基礎知識。這些都是從Mastering Nginx

基本格式拍攝我自己的個人筆記

基本文件分割成多個段

: 

<section> { 

    <directive> <parameters>; 

} 

全局參數

在上述標準格式沒有定義,它沒有{} surronding全球部分。它被放置在配置的頂層文件

重要的全球PARAMS

用戶 - 用戶和工作進程運行組。如果組省略,則與用戶使用的組相同

worker_processes - 啓動的工作進程數。他們處理來自客戶的連接。作爲CPU限制負載的一個規則,這應該等於處理器的數量,並且對於I/O限制負載將其減少1.5或2倍。

error_log - error_logs的位置。在指令中被覆蓋。第二個參數表示日誌調試級別(僅在編譯時配置調試模式時可用),信息,通知,警告,錯誤,暴擊,警報和緊急情況。

pid - 寫入主進程的進程ID的文件,覆蓋已編譯的默認值。

worker_connections - 配置工作進程可能打開的同時連接的最大數量。在反向代理服務器上尤其重要 - 在操作系統級別可能需要進行一些額外的調整,以達到同時連接的數量。

使用include文件 可以隨時隨地在您的配置文件中使用

包括/opt/local/etc/nginx/mime.types;

路徑中可能會出現通配符以匹配多個文件: include/opt/local/etc/nginx/vhost/*。CONF;

配置文件可以通過調用NGINX如下容易地測試: nginx的-t -c

在HTTP部分將是最常使用的部分。