nignx환경설정에 대한 내용은 opentutorials egoing님의 2013년 자료를 참고하였습니다.

nginx가 어떻게 동작하는지에 대한 설정은 conf라는 확장자 명을 가진 설정파일 내에 기술되어 있습니다. 컴파일을 통해서 설치한 경우라면 /usr/local/nginx/conf 에, apt-get을 이용해서 우분투에 설치한 경우는 /etc/nginx에 위치한다고 합니다. 환경에 따라서 저장되는 디렉토리가 다를 수 있기 때문에 sudo find / -name nginx.conf 명령어로 쉽게 찾을 수 있습니다. 그리고 아래는 설정 파일들의 역할입니다.

  • nginx.conf : 메인 설정 파일
  • fcgi.conf : FastCGI 환경설정 파일
  • sites-enabled : 활성화된 사이트들의 설정 파일들이 위치. 아파치에서는 Virtual host의 설정에 해당 (존재하지 않을수도 있음)
  • sites-available : 비활성화된 사이트들의 설정 파일들이 위치

이 중 메인 설정 파일인 nginx.conf의 구조를 파악 해 보겠습니다.

user www-data;
worker_processes  1;
pid /run/nginx.pid;

events {
    worker_connections  1024;
}

http { 
    include       mime.types;
    server {
        listen       80;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
[1] Core 모듈
  • user: nginx는 마스터프로세스와 워커프로세스로 나뉘는데, user 지시어를 통해 이 워커프로세스의 권한을 지정 할 수 있습니다. 그리고 워커프로세스가 실질적인 웹 서버의 역할을 수행합니다.
  • worker_processes: 프로세스의 실행 가능한 수를 나타냅니다.
  • pid: 마스터프로세스의 ID 정보가 저장되는 공간입니다.
[2] Events 블록

이벤트 블록은 네트워크의 비동기 이벤트 처리 방식에 대한 옵션 설정 값을 가집니다. worker_connections는 하나의 프로세스가 처리할 수 있는 접속 수를 의미합니다.

[3] Http 블록

server, location의 루트 블록이라고 할 수 있고, 여기서 설정된 값을 하위 블록들이 상속합니다. http 블록은 여러개를 사용할 수 있지만 관리상의 이슈로 한번만 사용하는 것을 권장합니다.

  • keepalive_timeout: 클라이언트에서 커넥션을 유지하는 시간을 의미합니다. 요청도 없으면서 불필요한 커넥션을 유지할 수 있기 때문에 10초 정도로 줄여주거나 낮은 값을 설정하는 것이 좋습니다.
  • server_tokens off: Nginx의 버전을 숨길 수 있는 기능입니다. 주석을 제거하여 보안 이슈를 방지하는 것이 좋습니다.