Nginx in EC2

Nginx

엔진엑스는 동시접속 처리에 특화된 웹서버 프로그램이다. 아파치와 양대산맥을 이루고 있지만 최근 급부상하고 있다. 그 이유는 훨씬 단순하며, 비동기로 동작해서 엄청난 효율을 보여주기 때문이다.


역할

HTTP 서버

html,css나 이미지 등 정적파일들을 앞단에서 전송하는 역할을 한다.

리버스 프록시 서버

프록시서버는 클라이언트의 요청을 받아서 서버에게 전달하는 전달자이다. 리버스 프록시서버를 두게 되면 보안적으로 우세하며, 요청을 배분하는 역할을 한다.


장점

Nginx는 event-driven구조의 비동기 방식으로 동작한다. 새로운 요청이 들어오면 아파치는 쓰레드를 새로 생성해서 처리를 하기 때문에 많은 요청이 들어오면 CPU와 메모리의 소모가 커진다. 반면, 엔진엑스는 프로세스는 고정되어 있고 쓰레드를 새로 생성하지 않기 때문에 적은자원으로 효율적인 운용이 가능해진다.


설치

sudo apt-get install nginx

usr/local/etc/nginx로 이동하면 엔진엑스 파일들을 확인할 수 있다.


사용

nginx.conf파일이 엔진엑스의 방식을 지정하는 파일이다.

sudo vi nginx.conf

파일을 열어보면 다음 구조를 볼 수 있다.

# worker 프로세스를 실행할 사용자 설정
user  nginx;

# worker 프로세스 설정
worker_processes  1;

# 오류 로그 파일 경로
error_log  /var/log/nginx/error.log warn;

# NGINX 마스터 프로세스 ID 를 저장할 파일 경로 
pid        /var/run/nginx.pid;


# 접속 처리에 관한 설정을 한다.
events {
    # 워커 프로레스 한 개당 동시 접속 수 지정 (512 혹은 1024 를 기준으로 지정)
    worker_connections  1024;
}

# 웹, 프록시 관련 서버 설정
http {
    # mime.types 파일을 읽어들인다.
    include       /etc/nginx/mime.types;
  
    # MIME 타입 설정
    default_type  application/octet-stream;

    # 엑세스 로그 형식 지정
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    # 엑세스 로그를 남길 파일 경로
    access_log  /var/log/nginx/access.log  main;

    # sendfile api 를 사용 여부
    sendfile        on;
    #tcp_nopush     on;

    # 접속시 커넥션 유지 시간
    keepalive_timeout  65;

    #gzip  on;

    # /etc/nginx/conf.d 디렉토리 아래 있는 .conf 파일을 모두 읽어 들임
    include /etc/nginx/conf.d/*.conf;
}

리버스 프록시 설정

리버스 프록시를 설정하려면 다음과 같은 구조로 작성한다.

http {
    server {
        listen 80;
        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }
}

좋은 웹페이지 즐겨찾기