Nginx
nginx拆分大配置文件
我的 nginx 預設配置文件變得很大。我想將其拆分為較小的配置文件,每個文件僅包含一個,每個文件最多 4 個位置,以便我可以快速啟用/禁用它們。
實際文件如下所示:
server { listen 80 default_server; root /var/www/ location /1 { config info...; } location /2 { config info....; } location /abc { proxy_pass...; } location /xyz { fastcgi_pass....; } location /5678ab { config info...; } location /admin { config info....; }
現在,如果我想將其拆分為每個文件中只有幾個位置(位置屬於一起),那麼在不引起混亂的情況下,什麼是正確的方法(比如在每個文件中聲明根,因此 nginx 的路徑很奇怪試圖查找文件)?
您可能正在尋找 Nginx 的
include
功能: http: //nginx.org/en/docs/ngx_core_module.html#include你可以像這樣使用它:
server { listen 80; server_name example.com; […] include conf/location.conf; }
include 也接受萬用字元,所以你也可以寫
include include/*.conf;
包含目錄中的每個 .conf 文件include*。
您可以使用創建站點文件夾
mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
然後將你的大
your_config.conf
文件分割成更小的文件sites-available/
:YOURCONF="/etc/nginx/conf.d/your_config.conf" cd /etc/nginx mkdir -p sites-available sites-enabled cd sites-available/ csplit "$YOURCONF" '/^\s*server\s*{*$/' {*} for i in xx*; do new=$(grep -oPm1 '(?<=server_name).+(?=;)' $i|sed -e 's/\(\w\) /\1_/g'|xargs); if [[ -e $new.conf ]] ; then echo "" >>$new.conf cat "$i">>$new.conf rm "$i" else mv "$i" $new.conf fi done
(我從這個來源增強了這一點:https ://stackoverflow.com/a/9635153/1069083 )
http
請務必將其添加到您的塊內的末尾/etc/nginx/conf.d/*.conf;
:include /etc/nginx/sites-enabled/*.conf;
注意:
server
塊外的註釋被切到每個文件的底部,所以塊前不應該有註釋server
。將第一行中的註釋移到塊內部,例如:# don't put comments here server { # put your comments about domain xyz.org here listen 80; server_name xyz.org; ...