NGINX - 特定のドメインのサーバーブロック全体をエクスポートする方法

NGINX - 特定のドメインのサーバーブロック全体をエクスポートする方法

server {...}特定のドメインを含むブロック全体をエクスポートするためのツール、または1行または他の項目が必要です。

いくつかの例:

### 1)
cat conf.d/domains.conf
server {

  include http.conf;
  server_name example.com;

  # [...]

}

server {

  include https.conf;
  server_name foo.com;

  # [...]

}

server {

  include https.conf;
  server_name example.com;

  # [...]

}

---

./script conf.d/domains.conf example.com

server {

  include http.conf;
  server_name example.com;

  # [...]

}

server {

  include https.conf;
  server_name example.com;

  # [...]

}

### 2)
cat conf.d/domains.conf

server {

  include ssl.conf;
  server_name example-foo.com;

  # [...]

}

server {

  include ssl.conf;
  server_name example-bar.com
              example.com
              fake.domain.com;

  location / {
    return 204 "OK";
  }

  # [...]

}

server {

  # include headers.conf;
  include ssl.conf;

  server_name example-baz.com example.com;

  # [...]

}

server {
  include ssl.conf;
  root /var/www/;

  server_name example-baz.com exampleee.com;

  # [...]

}

---

./script conf.d/domains.conf example.com

server {

  include ssl.conf;
  server_name example-bar.com
              example.com;

  # [...]

}

server {

  include ssl.conf;
  server_name example-bar.com
              example.com
              fake.domain.com;

  location / {
    return 204 "OK";
  }

  # [...]

}

server {

  # include headers.conf;
  include ssl.conf;

  server_name example-baz.com example.com;

  # [...]

}

私の設定には多くの行があり、多くの外部ファイルに分割されています。

これを行うツールを知っていますか?それとも提案がありますか?

ありがとうございます!

答え1

awkを使用すると、ケースドメインと中括弧「$ domain {」の区切り文字の間の2つのパターンをフィルタリングしてこれを達成できます。

たとえば、

awk '/exampledomain  {/,/}/' exampledomains.conf

このコマンドは最初の区切り文字を使用します。

ドメイン例{

2番目の区切り記号である右中括弧は次のとおりです。

}

次に、ドメイン行を含むコンテンツを選択したファイルに印刷します(この例ではexampledomains.conf)。

これが正しく機能するには、スペースを含む入力がテキストでなければならないことを検討してください。

関連情報