Nginx
多個 nginx 語句可以在配置文件的同一行嗎?
問題
我正在創建一個基於環境變數動態創建 nginx 配置的 docker 映像。我想盡量減少所需的環境變數數量。
我有一個看起來像這樣的配置模板文件:
server { ... $ALLOW_DENY ... }
我想像這樣配置模板
export ALLOW_DENY="allow 11.11.11.11; deny all;" envsubst '\$ALLOW_DENY' < sites-available/site.template > sites-available/my-site
我的問題是我不想為每個允許或拒絕語句創建多個環境變數(此文件的某些配置可能不需要,而其他配置可能需要 5 或 6 個)但我找不到讓
envsubst
接受換行符的方法字元,我不確定是否允許在一行中使用多個 nginx 命令。作為參考,我將使用載入我的所有環境變數
aws ssm
,我認為它不接受這樣的多行環境變數:export $ALLOW_DENY=" allow 11.11.11.11; deny all;"
tl;博士
這是有效的嗎?
server { ... allow 11.11.11.11; deny all; ... }
是的。儘管我強烈建議自由使用空格、換行符和
include
語句來增加可讀性——最終由你決定在方便的地方跳過換行符——nginx 只處理特殊的換行符,以便能夠指出發生配置解析器錯誤的行。nginx 配置文件只不過是花括號分隔的塊中以分號分隔的指令 - 除了類似於空格和製表符的解析之外,換行符是無關緊要的:
一個簡單的指令由名稱和參數組成,由空格分隔並以分號 (;) 結尾。塊指令與簡單指令具有相同的結構,但它不是以分號結尾,而是以一組用大括號({ 和 })包圍的附加指令結束。
您不想在一行中進行太多配置的唯一原因是可讀性 - 註釋只能在一行的基礎上進行:
符號之後的其餘行被視為註釋。