nginx 분할 대형 구성 파일


17

내 nginx 기본 구성 파일이 커지고 있습니다. 파일을 하나의 최대 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....;
    }

이제 각 파일에 몇 개의 위치 (함께 속한 위치)를 갖도록 분할하려면 각 파일에 루트를 선언하는 것처럼 혼란을 일으키지 않고 적절한 방법이 무엇입니까? 따라서 이상한 경로는 nginx입니다. 파일을 찾습니다)?

답변:


24

아마도 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 귀하의 솔루션이 사이트 사용 가능 폴더를 사용하는 것입니까?
Mark Stosberg

나는 지금 약간 혼란스러워합니다 ...
FLXN

너무 늦게 대답해서 죄송합니다! 알림을 읽지 않은 것 같습니다. -.- FLXN의 솔루션을 이미 사용하고 있습니다. 그러나 그것은 나를 행복하게하지 않습니다. 브라우저를 통해서만 관리가 이루어지는 소규모 회사를위한 서버를 구축하고 있기 때문에 파일 내부를 변경하고 싶지 않습니다. 서비스가 브라우저를 통해 비활성화되면 nginx의 하위 폴더 (예 : 'location')도 비활성화되기를 원하므로 사이트 활성화 폴더의 구성 파일을 연결 해제하는 것이 가장 좋은 것처럼 보입니다.
oliverjkb

6

당신은 사이트 폴더를 만들 수 있습니다

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 : //.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.