我的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;