nginxは大きな設定ファイルを分割します


16

私の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を持つファイルを見つけようとします)?

回答:


22

おそらく、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;

includeディレクトリ内のすべての* .confファイルを含めるには


これはすでに検討しましたが、サイト対応フォルダー内のファイルのリンクを単に解除するのではなく、ファイルの内容を編集することになるため、スキップしました。
Oliverjkb

@ardukarあなたの解決策はサイト対応フォルダを使用することでしたか?
マークストースバーグ

私は今少し混乱しています...
FLXN

遅刻してごめんなさい!通知を読んでいないようです。-.- FLXNのソリューションを既に使用しています。しかし、それは私を幸せにしません。私はブラウザを介してのみ管理が行われる小規模な企業向けにサーバーを構築しているため、ファイル内で変更を行いたくないのです。ブラウザ経由でサービスが無効になった場合、nginxのサブフォルダー(「場所」など)も無効にしたいので、サイト対応フォルダーの構成ファイルのリンクを解除するのが最良のアイデアのようです。
oliverjkb

5

以下を使用してサイトフォルダーを作成できます。

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ブロックの前にコメントはありません。代わりに、ブロック内の最初の行のコメントを移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.