nginx分割大型configuration文件

我的nginx默认configuration文件变得巨大。 我想分割成较小的configuration文件,每个文件只包含一个,最多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....; } 

现在,如果我想将每个文件中只有less数几个位置(位置属于同一个文件)分开,那么在不造成混乱的情况下,这将是一个正确的方法(如在每个文件中声明root,因此具有奇怪的path,nginx试图find文件)?

您可能正在寻找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”

您可以使用创build网站文件夹

 mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled 

#然后将你的大型的your_config.conf文件分割成更小的文件到sites-available/ with:

 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 )

一定要在/etc/nginx/conf.d/*.conf;http块中添加这个/etc/nginx/conf.d/*.conf;

 include /etc/nginx/sites-enabled/*.conf;