Nginx
nginx 配置中的自定義變數,在“伺服器”中,將無法解析
我執行 nginx。在一個網站的“伺服器”部分中,我有這個:
server { listen 443 ssl http2; listen [::]:443 ssl http2; set $app_name myapp; set $app_port 4000; ssl_certificate /etc/letsencrypt/live/$app_name.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/$app_name.com/privkey.pem; access_log /var/log/nginx/$app_name.com.access.log; error_log /var/log/nginx/$app_name.com.error.log; #.............
至少有一個自定義變數無法解析 -
app_name
; 例如,它將創建一個文件/var/log/nginx/$app_name.com.access.log
即,其中包含**$app_name**。
因此,在使用它的配置文件的所有其他位置,它也不會得到解決。
在“error.log”中,我看到變數的值為空。
為什麼不?如何解決?
即使您以某種方式使其正常工作,您也確實不應該使用此方法:
文件路徑可以包含變數(0.7.6+),但是這樣的日誌有一些限制:
- 工作程序使用其憑據的使用者應有權在具有此類日誌的目錄中創建文件;
- 緩衝寫入不起作用;
- 每次寫入日誌時都會打開和關閉文件。但是,由於常用文件的描述符可以儲存在記憶體中,因此可以在 open_log_file_cache 指令的有效參數指定的時間內繼續寫入舊文件
- $$ .. $$
此外,
error_log
似乎根本不接受變數。您最好使用模板/宏語言來生成配置(我更喜歡 m4,請參閱 參考資料
man m4
)。