NGINX - 특정 도메인에 대한 전체 서버 블록을 내보내는 방법

NGINX - 특정 도메인에 대한 전체 서버 블록을 내보내는 방법

server {...}특정 도메인을 포함하는 전체 블록을 내보낼 도구나 한 줄 또는 기타 항목이 필요합니다 .

몇 가지 예:

### 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 {'에서 구분 기호 사이의 두 패턴을 필터링하여 이를 달성할 수 있습니다.

예를 들어:

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

이 명령은 첫 번째 구분 기호를 사용합니다.

예시 도메인 {

두 번째 구분 기호인 오른쪽 중괄호는 다음과 같습니다.

}

그리고 도메인 줄을 포함한 내용을 선택한 파일에 인쇄합니다(이 예에서는 exampledomains.conf).

이것이 제대로 작동하려면 공백을 포함하여 입력이 텍스트여야 한다는 점을 고려하세요.

관련 정보