Nginxのデフォルト設定ファイルが巨大になっています。それを小さな構成ファイルに分割し、各ファイルに最大4つの場所を1つだけ含めて、迅速に有効化/無効化できるようにしたいと思います。
実際のファイルは次のようになります。
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/106908 )
Your/etc/nginx/conf.d/*.conf;
のhttp
ブロック内の最後に必ず追加してください:
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;
...