Setting up NginX for CentOS
이번 포스트는 CentOS에서 NginX를 설치하는 방법을 알아봅니다.
Download Nginx
NginX를 다운로드 받습니다. 다운로드 받고자 하는 디렉토리에서 아래의 커맨드를 실행합니다.
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz $ tar -xvf nginx-1.8.0.tar.gz
Test Configuration
우선 NginX가 설치 가능한 환경인지 테스트를 해봅니다. 아래의 커맨드를 실행하세요.
$ cd nginx-1.8.0 $ ./configure
./configure 실행시 빌드가 가능한 상태인지 체크를 하게 되는데 여기서 누락된 모듈이 있으면 콘솔로 출력 해줍니다. 콘솔로 출력된 해당 모듈을 옵션으로 제외를 시키던지 또는 설치하라는 안내문구가 출력되는데 이 부분을 모두 처리하고 다음 단계로 갑니다.
TIP. 포스트 작성중에는 PCRE가 없었기 때문 해당 부분을 처리해야 했습니다.
PCRE는 http://www.pcre.org/ 에서 관리하고 있는데 여기서 Download 부분을 보면 됩니다. 현재 가장 최신 버전은 8.37 버전인듯 하네요.
$ wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz $ tar -xvf pcre-8.37.tar.gz
ftp와 소스 포지 미러를 제공하는데 소스 포지에서 내려 받아서 했습니다. 그 이후 압축을 해제하시면 설치 끝!
다시 한번 nginx-1.8.0/configure를 실행시켜봤습니다다. --with-pcre 옵션에는 위에서 설치한 pcre의 위치를 잡아줍니다. 아래처럼 실행하면 됩니다.
$ ./configure --with-pcre=<path>
build make file
./configure에서 에러가 나지 않는다면 make 파일을 생성해줍니다. 그럼 다음처럼 설치를 진행합니다.
$ make $ sudo make install
설치를 끝냈다면 기본적인 NginX의 설치 위치는 /usr/local/nginx 입니다.
Handling NginX
기본적인 NginX 사용법을 알아봅니다. 우선 아래와 같은 커맨드로 NginX를 구동할 수 있습니다.
$ sudo /usr/local/nginx/sbin/nginx
메뉴얼이 필요하다면 -? 옵션을 주면 됩니다. 자주 쓰이는 옵션은 -s인데 이것은 다음처럼 사용합니다.
$ nginx -s stop # 빠른 종료. (강제로 Kill) $ nginx -s quit # 부드러운 종료. (기존 처리 내역이 있다면 처리하고 종료) $ nginx -s reopen # 로그 파일들을 다시 오픈. $ nginx -s reload # 환경 설정 파일을 다시 읽음.
그리고 -V 옵션을 사용하면 nginx 빌드할때 사용했던 옵션을 알 수 있습니다.
Nginx Configration
NginX의 환경설정은 기본 위치일때 /usr/local/nginx/conf/nginx.conf 입니다. 파일을 열어보면 기본 root 설정이 html로 되어 있는데 이것의 위치는 /usr/local/nginx/html 입니다. 더 자세한 설명은 https://www.nginx.com/resources/wiki/start/topics/examples/full/을 참조하세요.
Simple Example
가상 호스트를 적용하는법을 간단하게 하나 투척하고 갑니다.
server { listen <port>; # ex. 80 server_name <your domain>; # ex. blog.jdm.kr root <rootDir>; # ex. /home/blog index none; # 필요에 따라 첫 페이지를 지정합니다. # 아래는 파비콘 관련 부분인데 필요 없으면 삭제 가능합니다. location = /favicon.ico { return 204; access_log off; log_not_found off; } location /some { # 헤더를 정의할 수도 있습니다. add_header 'Access-Control-Allow-Origin' 'http://some.domain.name'; add_header 'Access-Control-Allow-Methods' 'GET'; alias <someDir>; index none; } location / { # 프록시 설정도 해줄 수 있어요. proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:1234; } }
TIP. location 구문은 선언한 순서대로 동작하지 않고 우선 순위대로 동작합니다. 해당 부분에 대해서는 http://nginx.org/en/docs/http/ngx_http_core_module.html#location를 확인하세요.
Etc.
부가적이긴 하지만 아래의 옵션을 켜주면 좋습니다.
gzip on; # 패킷 압축 사용 server_tokens off; # 응답 헤더의 NginX 버전 감춤