2018년 3월 27일 화요일

[NGINX] 1. 코어 HTTP 모듈

1. CLI를 이용한 엔진엑스 재로딩
  - 데비안 기반 : /etc/init.d/Nginx reload
  - 페도라 기반 : service Nginx reload
  - FreeBSD/BSD : service Nginx reload
  - Windows : Nginx -s reload

2. 환경설정 파일 분리
  - nginx.conf : 주 환경설정 파일
  - fcgi.conf : 모든 FastCGI 환경설정을 포함
  - sites-enabled/ : 이 디렉토리는 활성화된 모든 사이트를 포함
  - sites-available/ : 이 디렉토리는 사용할 수는 있지만 활성화되지 않은 모든 사이트를 포함

3. 다중 가상 호스트의 설정
  - 한 개 이상의 도메인을 호스팅할 때 이를 지원하기 위한 가상 호스트를 편리하게 설정 가능
  - server_name 지시어를 통해 현재 가상 호스트 환경설정에 대응되는 도메인을 쉽게 정의 (와일드 카드 사용 가능)
    ~ 예) server_name www.example.com *.example.com
  - 기본 캐치올 가상 호스트 : server_name 이외에 다른 주소를 입력하거나 IP 주소를 직접 입력할 경우 웹 서버는 해당 콘텐츠를 서비스 불가능함. 이를 해결 하기 위해 모든 주소 및 IP 주소를 리스닝할 수 있는 메커니즘 지원
    ~ 예) server_name -; location / { root /var/www/default; index index.html index.htm; }

4. 작업자 프로세스
  - worker_process 지시자 (서버의 코어 수와 같게 설정할 것을 권장)
  - events { worker_connection 4096 } 한 프로세스 처리 가능한 접속자
  - 최대 클라이언트 수 - workder_process * worker_connection

5. 사용자 식별 및 기록을 위한 쿠키 서비스
  - 웹 사이트가 외부 분석 소프트웨어 채택을 원하지 않는 경우, 익명의 사용자 행동양식을 추적하는데 매우 유용함, 아파치2의 mod_uid 모듈과 호환
userid on;
userid_name uid;
userid_domain example1.com
userid_path /;
userid_expires 365d;
userid_p3p 'policyref="/w3c/p3p.xml",CP="CUR ADM OUR NOR STA NID"';
=> 표준 쿠키 정보 : 주 도메인 / 경로 / 만료 기간 및 웹 사이트 프라이버시 정책

6. 특정 콘텐츠 타입에 Gzip 압축 설정
http {
  gzip on; # Gzip 압축 적용
  gzip_min_length 1000; # 1000바이트가 넘을 때 압축 적용
  gzip_comp_level 6;
  gzip_proxied expired no-cache no-store private auth; # 프록시 요청과 응답에 기반하여 압축
  gzip_types text/plain application/xml;
  gzip_dissable "MSIE [1-6]\.";
  server {}
}

7. 404 등의 에러페이지 설정
location @fallback {
  proxy_pass http://backend;
}
error_page 404 /404.html; # 404 에러를 간단한 HTML에 연결
error_page 502 503 504 /50x.html; # 여러 응답 코드를 하나의 HTML 에 연결
error_page 403 http://example.com/forbidden.html # 외부의 링크로 연결
error_page 404 = @fallback # @fallback으로 정의된 또 다른 위치에 페이지를 매핑
error_page 404 = 200 /.empty.gif; @ 404 에러가 너무 많이 발생할 경우 200 응답과 간단한 이미지를 보냄

8.  기타 기능
  - 업로드 확장 지시자(기본 1M) : client_max_body_size 100M;
  - html 인클루드 가능한 동적 SSI 사용 : ssi on;
  - 디렉토리 자동 색인 설정 : autoindex on;