Nginx 설정 관리
Nginx 는 효율 을 위해 htaccess 디 렉 터 리 설정 파일 을 버 렸 다 는 난처 한 문제 가 있 었 습 니 다.프로젝트 가 Nginx 를 사용 하여 HTTP 서 비 스 를 제공 하려 고 할 때 설정 파일 에 디 렉 터 리 정 보 를 대량으로 하 드 코딩 해 야 합 니 다. 이식 성과 유지 가능성 이 떨 어 집 니 다.그렇다면 상대 적 으로 변통 하 는 방법 을 찾 아 이식 성과 유지 가능성 을 높 일 수 있 을 까?
네트워크 노드 의 호스트 이름 에서 출발
전통 적 인 방법 에서 네트워크 시스템 이 여러 노드 에 배치 되 어 작업 을 협조 해 야 할 때 노드 간 의 통신 은 IP 가 아 닌 호스트 이름 을 부여 하여 이 루어 져 야 한다.IP 와 호스트 이름 의 대응 관 계 는
/etc/hosts
파일 이 유지 보 수 를 책임 집 니 다.그 목적 은 디 결합 사고 에 따라 프로그램 코드 의 하 드 인 코딩 내용 (네트워크 노드 IP) 을 줄 이 는 것 이다.
이 방법 을 참고 하여 프로젝트 프로필 을 모두 심 볼 릭 링크 '가장' 으로 Nginx 시스템 설정 디 렉 터 리
/etc/nginx
에 저장 할 수 있 습 니까?Nginx 설정
1.1 공용 설정
시스템 설정 디 렉 터 리 에 하위 디 렉 터 리
conf.d
가 있 습 니 다. 접미사 이름 .conf
의 파일 은 주 설정 파일 의 마지막 http
블록) 에 불 러 옵 니 다.Nginx 는 동적 설정 조정 을 지원 하지 않 기 때문에 일부 성명 은 전체 설정 에서 우선 순 위 를 정의 하고 기능 사용 에 영향 을 주지 않 습 니 다.
그러면 일부 크로스 필드 의 공용 설정 은 이 디 렉 터 리 에 놓 을 수 있 습 니 다.예 를 들 어
/etc/nginx/conf.d/upstream-php.conf
:upstream php {
server unix:/var/run/php5-fpm.sock;
}
이론 적 으로
upstream
뿐만 아니 라 http
블록 에 사용 할 수 있 는 모든 유 니 버 설 명령 은 이 디 렉 터 리 에 놓 을 수 있다.또한 이러한 사용자 정의 /etc/nginx/conf.d/types.conf
(이렇게 하면 mime.types
파일 이 수정 되 지 않도록 보호 할 수 있 습 니 다):types {
text/html do;
}
1.2 도 메 인 설정
마찬가지 로 시스템 설정 디 렉 터 리 에 두 개의
sites-available
와 sites-enabled
하위 디 렉 터 리 가 있 습 니 다.다음 디 렉 터 리 에 있 는 모든 파일 이 불 러 옵 니 다.Nginx 의 기본 VHOST 관리 방식 을 모방 하면 도 메 인 설정 파일
dummy.local
을 sites-available/dummy.local
로 저장 한 다음 에 심 볼 릭 링크 sites-enabled/dummy.local
로 연결 하여 효력 을 발생 시 킬 수 있 습 니 다.그러나 실제 생산 과정 에서 흔히 볼 수 있 는 상황 은
dummy.local
주 역 dummy.local
, 정적 자원 자 역 s.dummy.local
(static), 업무 인터페이스 자 역 api.dummy.local
과 데이터 자원 자 역 a.dummy.local
(asset) 으로 나 뉜 다.그리고 서로 다른 네트워크 노드 에서 그 중의 하나 또는 여러 개 를 선택적으로 배치 하여 균형 적 인 부하 나 용 재 를 한다.따라서 가장 신뢰 할 수 있 는 방법 은 모든 하위 영역 을 독립 적 으로 설정 하 는 것 이다 (독립 된 파일 로 만 드 는 것).모두
sites-available
하위 디 렉 터 리 에 저장 되 지만 site-enabled
에 심 볼 릭 링크 가 필요 한 지 여 부 는 노드 계획 에 따라 결정 합 니 다.1.3 도 메 인 공용 설정
일부 경우, 일부 설정 은 주 영역의 다른 자 역 에 동시에 나타 날 수 있 습 니 다.예 를 들 어 앞에서 개성 있 는 파일 접미사, 예 를 들 어 CORS, 예 를 들 어 특수 한 PHP - FPM 설정 등 이 있 습 니 다.
가장 얕 은 이치 로 분석 하면 이러한 설정 을 분리 하 는 것 은 복용 을 향상 시 키 고 일치 성과 신뢰성 을 보장 하 는 데 도움 이 된다.그럼 어디 에 두 는 게 좋 을까요?
1.3.1 '호출 됨' 의
upstream
upstream
은 Nginx 에서 서버 그룹 (server group) 으로 정의 되 며 proxy_pass
, fastcgi_pass
, uwsgi_pass
, scgi_pass
, memcached_pass
명령 에 의 해 호출 됩 니 다.파일 /etc/nginx/conf.d/upstream-php-dummy.local.conf
에 저장 하면 전체 설정 에 영향 을 주거 나 오염 되 지 않 습 니 다.upstream php-dummy {
server unix:/var/run/php5-fpm.sock;
}
파일 은 식별 과 관리 에 편리 하도록
<directive>-<purpose>-<root domain>.conf
형식 으로 3 단 으로 명명 하 는 것 을 권장 합 니 다.1.3.2 "인 용 됨" 의 다른 설정
상기 지역
upstream
과 location @name
을 제외 하고 다른 설정 은 도 메 인 설정 의 해당 위치 에서 중복 참조 로 불 러 와 야 합 니 다.그래서 보관 /etc/nginx/sites-available/dummy.local.d/cors.conf
은 좋 은 선택 이 고 인용 도 편리 합 니 다.include sites-available/dummy.local.d/cors.conf;
디 렉 터 리 와 파일 을
sites-available/<root domain>.d/<purpose>.conf
두 단락 으로 명명 하여 식별 과 관리 에 편리 하도록 권장 합 니 다.1.4 하위 항목 설정
다른 상황 에서 같은 지역 의 체험 표현 은 사실은 여러 프로젝트 가 조합 되 어 이 루어 진 것 이다.예 를 들 어 주 체 는 CMS 이 고
/bbs/
는 BBS 를 걸 었 다.후자 의 프로필 은 관리 하기 위해 어디 에 두 어야 합 니까?나의 개인 적 인 방법 은 그것 을
/etc/nginx/sites-available/s.dummy.local.d/50-bbs.sub
로 보관 하 는 것 이다.이렇게 하면 도 메 인 설정 파일 의 모든 location
전에 대량으로 참조 하면 됩 니 다.include sites-available/s.dummy.local.d/*.sub;
디 렉 터 리 와 파일 을
sites-available/<sub-domain>.d/<priority>-<root-uri>.sub
세 단락 으로 명명 하 는 것 을 권장 합 니 다.게다가 어색 한 우선 순위 번호 의 원인 은
/bbs/lib/
하위 항목 의 설정 이 반드시 /bbs/
하위 항목 설정 전에 인용 되 어야 정상적으로 작 동 할 수 있 지만 대량 인용 시 bbs-lib.sub
는 bbs.sub
보다 늦 기 때문이다.우선 순위 번호 가 있 으 면 05-bbs-lib.sub
이 50-bbs.sub
이전에 인용 되 었 음 을 확보 할 수 있다.1.5 총 결, 역방향 검색 및 후속 유지보수
이 때 Nginx 시스템 설정 디 렉 터 리 는 다음 과 같 아야 합 니 다.
/etc/nginx
├── conf.d
│ ├── upstream-php.conf #
│ └── upstream-php-dummy.local.conf # upstream
├── sites-available
│ ├── dummy.local #
│ ├── dummy.local.d
│ │ ├── 05-bbs-lib.sub #
│ │ ├── 50-bbs.sub #
│ │ └── cors.conf #
│ ├── s.dummy.local #
│ └── s.dummy.local.d
│ ├── 05-bbs-lib.sub #
│ └── 50-bbs.sub #
└── sites-enabled
├── dummy.local # -> ../sites-available/dummy.local
└── s.dummy.local # -> ../sites-available/s.dummy.local
도 메 인 코드 배치
2.0 모방 Linux 디 렉 터 리 구조
최근 몇 년 동안 저 는 리 눅 스 의 디 렉 터 리 구 조 를 참고 하여 프로젝트 코드 의 디 렉 터 리 구 조 를 나 눌 것 입 니 다. 이렇게 하면 가장 잘 식별 되 기 때 문 입 니 다.
PROJECT
├── bin #
├── etc #
│ ├── cron.d #
│ └── nginx # Nginx
│ ├── conf.d # Nginx
│ └── sites-available # Nginx
│ ├── ROOT-DOMAIN.d # Nginx Nginx
│ └── SUB-DOMAIN.d # Nginx
├── include #
├── lib #
│ ├── Controller #
│ ├── Model #
│ │ └── DAO #
│ ├── Utility #
│ └── View #
│ └── Helper #
├── libexec # XGI
├── share #
│ ├── cron #
│ ├── public #
│ │ ├── .cache # -> ../../var/cache
│ │ └── .cgi-bin # -> ../../libexec
│ ├── scss # SCSS
│ └── static #
└── var #
├── cache #
├── db #
└── log #
2.1 잘 사용 하기
/var/www
생산 노드 에 배 치 된 후에 다음 과 같 아야 한다./var/www
└── dummy.local #
├── _bbs.git #
│ ├── etc
│ │ └── nginx
│ │ └── sites-available
│ │ ├── dummy.local.d
│ │ │ └── 50-bbs.sub #
│ │ └── s.dummy.local.d
│ │ └── 50-bbs.sub #
│ └── share
│ ├── public #
│ └── static #
├── _main.git #
│ ├── etc
│ │ └── nginx
│ │ └── sites-available
│ │ ├── dummy.local #
│ │ └── s.dummy.local #
│ └── share
│ ├── public #
│ │ └── bbs # -> ../../../_bbs.git/share/public
│ └── static #
│ └── bbs # -> ../../../_bbs.git/share/static
├── @ # -> _main.git/share/public
├── s # -> _main.git/share/static
├── www # -> @
└── ~log # Nginx
도 메 인 디 렉 터 리 에서,
_
기호 가 시 작 된 디 렉 터 리 는 코드 패키지 입 니 다.~log
디 렉 터 리 는 데이터 발굴 작업 에 필요 한 모든 HTTP 로 그 를 기록 하 는 데 사 용 됩 니 다.@
DNS 규약 에 따라 주 역 (근 역) 에서 사용 하 며 내부 파일 과 구 조 는 실제 체험 과 일치 합 니 다.그러나 주 항목 코드 가 버 전 라 이브 러 리 를 검출 하지 않 으 면 어떻게 해 야 합 니까?같은 디 렉 터 리 구조 에 따라
_
라 는 디 렉 터 리 를 만들어 대체 하면 된다.보기 만 해도 딱 이지 ~이 때 대응 하 는 Nginx 시스템 설정 디 렉 터 리 파일 구 조 는 다음 과 같 습 니 다.
/etc/nginx
├── sites-available
│ ├── dummy.local # -> /var/www/dummy.local/_main.git/etc/nginx/sites-available/dummy.local
│ ├── dummy.local.d
│ │ └── 50-bbs.sub # -> /var/www/dummy.local/_bbs.git/etc/nginx/sites-available/dummy.local.d/50-bbs.sub
│ ├── s.dummy.local # -> /var/www/dummy.local/_main.git/etc/nginx/sites-available/s.dummy.local
│ └── s.dummy.local.d
│ └── 50-bbs.sub # -> /var/www/dummy.local/_bbs.git/etc/nginx/sites-available/s.dummy.local.d/50-bbs.sub
└── sites-enabled
├── dummy.local # -> ../sites-available/dummy.local
└── s.dummy.local # -> ../sites-available/s.dummy.local
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.