블로그 이미지
OSSW(Open Source System SoftWare

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Notice

사이트상에 있는 정적인 파일들에 대해서 어느 특정 사용자가 대역폭을 차지하고 있을 수 있는데,

다음과 같은 방법을 사용하여 네트워크 대역폭의 제한을 설정 할 수 있습니다.



server {

    server_name www.example1.com;

    location /download/ {

        //  모든 사용자에 대해 /download 디렉토리의 파일 다운로드 속도를 10k 로 제한 

        limit_rate 10k;    

        root /var/www.www.example1.com/download/;

    }

    ...

}

 



by hyenas (11월)

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 대역폭(전송속도) 제한  (0) 2014.11.26
Nginx IP 접근제어 설정  (0) 2014.11.26
Nginx 로그 로테이션 설정  (0) 2014.11.26
Nginx 가상 호스트별 로그 설정  (0) 2014.11.26
Nginx 다중 로그 설정  (0) 2014.11.26
Nginx 로그 설정  (0) 2014.11.26
posted by lovelywas

이번 강의에서는 Nginx IP접근제어에 대해서 알아보겠습니다.



server {

    listen 80;

    server_name www.example1.com;

    location / {

        deny 192.168.56.101

        allow 192.168.56.0/24;

        deny all;

    }

...

}



위에서 부터 차례대로 192.168.56.101의 IP에 대해서 접근을 거부한 다음 192.168.1.0/24 의 접근을 허용하는 설정이며, 마지막에 있는 deny all 지시어는 그 외의 모든 IP주소에 대해 접근거부하는 설정입니다.


접근이 거부된 사용자가 접속시 "403 Forbiden" 페이지로 전환이 됩니다.



by hyenas(11월)

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 대역폭(전송속도) 제한  (0) 2014.11.26
Nginx IP 접근제어 설정  (0) 2014.11.26
Nginx 로그 로테이션 설정  (0) 2014.11.26
Nginx 가상 호스트별 로그 설정  (0) 2014.11.26
Nginx 다중 로그 설정  (0) 2014.11.26
Nginx 로그 설정  (0) 2014.11.26
posted by lovelywas

이번 강의에서는 로그 rotate 설정에 대해서 알아보도록 하겠습니다.


logrotate.conf 파일에 다음 환경설정을 추가합니다.


 /var/log/nginx/*.log {

    daily

    missingok

    rotate 52

    compress    // 로그 파일에 대한 압축

    delaycompress

    notifempty

    create 640 root adm    // 보관이 되는 파일의 권한 설정

    sharedscripts

    postrotate

    [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

    endscript

}


기존의 로그파일을 새로운 파일명으로 바꾸고 압축을 합니다.

방금 이름을 바꾼 로그 파일을 닫고 새로운 로그 파일에 기록을 하도록

엔진엑스 마스터 프로세스에 USR1 시그널을 보냅니다.



테스트 방법  :  logrotate -d /nginx/logrotate.conf

응용 : crontab에 설정하여 매일 정시에 로그를 로테이트하여 사용이 가능합니다.



by hyeons(10월)

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 대역폭(전송속도) 제한  (0) 2014.11.26
Nginx IP 접근제어 설정  (0) 2014.11.26
Nginx 로그 로테이션 설정  (0) 2014.11.26
Nginx 가상 호스트별 로그 설정  (0) 2014.11.26
Nginx 다중 로그 설정  (0) 2014.11.26
Nginx 로그 설정  (0) 2014.11.26
posted by lovelywas

가상 호스트에 각각 로그를 설정하는 예제 입니다.


 

 http {

    ...

    server {

        listen 80;

        server_name www.example1.com ;

        access_log /var/log/nginx/example1.access.log;

        error_log /var/log/nginx/example1.error.log;

        ...

    }

    server {

        listen 80;

        server_name www.example2.com ;

        access_log /var/log/nginx/example2.access.log;

        error_log /var/log/nginx/example2.error.log;

        ...

    }

    server {

        listen 80;

        server_name www.exampl3.com;

        access_log /var/log/nginx/example3.access.log main;

        error_log /var/log/nginx/example3.error.log error_main;

        ...

    }




by hyeons(10월)

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx IP 접근제어 설정  (0) 2014.11.26
Nginx 로그 로테이션 설정  (0) 2014.11.26
Nginx 가상 호스트별 로그 설정  (0) 2014.11.26
Nginx 다중 로그 설정  (0) 2014.11.26
Nginx 로그 설정  (0) 2014.11.26
Nginx와 OpenSSL 보완 취약점  (0) 2014.07.31
posted by lovelywas

동적인 요청에 대한 로그는 main로그 포멧을 사용하고, 정적인 요청은 static_main 로그 포멧을 사용,

에러로그는 error_main 로그포멧을 사용하는 예로 다음과 같이 설정이 가능합니다.


 

http {

    log_format main '$remote_addr - $remote_user [$time_local] ' 

                        '"$request" $status $body_bytes_sent "$http_referer" '

                        '"$http_user_agent" "$http_x_forwarded_for"';


    #정적(static) 파일에 대해서는 다음과 같은 로그 포멧 사용

    log_format static_main '$remote_addr [$time_local] '

                               '"$request" $status $body_bytes_sent

                               '"$http_user_agent";


    #에러 로그에 대해서는 다음과 같은 로그 포멧 사용

    log_format error_main '$remote_addr - $remote_user [$time_local] '

                              '"$request" $status "$http_user_agent";

 ...


 server {

    listen 80;

    server_name example1.com;

    error_log var/log/nginx/example1_error.log error_main;

    location / {

        ...

        access_log /var/log/nginx/example1_main.log main;

    }

    location /static/ {

        ...

        access_log /var/log/nginx/example1_static.log static_main;

    }

}




by hyeons(9월)

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 로그 로테이션 설정  (0) 2014.11.26
Nginx 가상 호스트별 로그 설정  (0) 2014.11.26
Nginx 다중 로그 설정  (0) 2014.11.26
Nginx 로그 설정  (0) 2014.11.26
Nginx와 OpenSSL 보완 취약점  (0) 2014.07.31
Nginx 실시간 모니터링 (ngxtop)  (0) 2014.07.30
posted by lovelywas

1. Nginx의 로그 포멧은 다음과 같이 설정할 수 있습니다.

 

http {

    log_format combiled '$remote_addr - $remote_user [$time_local] ' 

        '"$request" $status $body_byte_sent ' '"$http_referer" "$http_user_agent"';

    access_log /var/log/nginx/access.log combined;     //combine 형태의 로그

    error_log /var/log/nginx/error.log crit;              //crit 형태의 로그

...




Nginx 로그 레벨 설정

에러 레벨 

의미 

 Alert

 긴급 상황

 Crit

 위험한 상황

 Error

 오류 상황

 Warn

 경고 상황

 Notice

 정상이지만 중요한 상황

 Info

 정보 메시지

 Debug

 디버그레벨 메시지



2. Apache 포맷으로 로그 기록하기

대부분의 웹 로그 분석기는 Apache 로그 포멧을 기준으로 작동을 합니다. 필요에 따라서 NginX의 로그를 다음과 같은 방법을 통하여 Apache 로그 포멧으로 기록을 할 수 있습니다.



log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded+for"';

access_log /var/log/nginx/access.log main; 



Apache와 Nginx 로그 설정 비교.

 Apache 설정

 Nginx 설정

 의미

 %h

 $remote_addr

 이 사이트에 접근하고 있는 클라이언트들의 IP 주소

 %l

 $remote_user

 사용자가 HTTP 인증으로 로그인했을 때 사용자명

 %t

 $time_local

 요청이 발생한 때 서버의 지역 타임스탬프

 %r

 $request

 서버에 제출된 요청

 %s

 $status

 HTTP 응답 코드 (200, 404, 500 등)

 %b

 $body_bytes_sent

 서버가 클라이언트로 전송한 응답의 크기

 %U

 $http_referer

 클라이언트를 이 서버로 오게 만든 이전 페이지의 URL

 "%{User-agent}i"

 $http_user_agent

 HTTP 요청에 사용된 브라우저 타입


참고 : http://httpd.apache.org/docs/2.2/ko/mod/mod_log_config.html



by hyeons(9월)



posted by lovelywas

Nginx를 Reverse Proxy 웹서버로 사용할때의 캐시 사용방법

http {

    include       mime.types;

    default_type  application/octet-stream;

    proxy_cache_path /nginx/nginx-1.6/cache levels=1:2 key_zone=my-cache:8m max_size=1000m inactive=600m;

    proxy_temp_path /nginx/nginx-1.6/tmp;


    ... 중략


    server {

        listen       80;

        server_name  localhost;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html;

            index  index.html index.htm;

        }

        location ~ \.jsp$ {

            include proxy.conf;

            proxy_pass  http://127.0.0.1:8080;

            proxy_cache my-cache;

            proxy_cache_valid 200 302 60m; 

            proxy_cache_valid 404 1m;

        }

    }

}


최대 1,000MB의 캐시를 만들어 HTTP 응답코드가 200 또는 302일 경우 60분동안 캐시에 저장을 하고 응답코드가 404인 경우에는 1분동안 캐시에 저장하는 설정입니다.

 

자주쓰는 캐시설정 지시어

 : proxy_cache 지시어

   설명 : 캐시 존을 정의합니다. 캐시존에 부여된 식별자를 이용해 다른지시어에서 사용을 한다.

   syntax : proxy_cache zonename | off;

   default : proxy_cache off;

   사용 예) proxy_cache cache1;    // cache1 이라는 캐시존을 정의

   context : http, server, location

 

 : proxy_cache_path 지시어

   설명 : 캐시파과 매개변수를 저장하기 위한 디렉토리를 지정한다.

   syntax : proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time]

                    [maxsize=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time]

    - level : 하위 디렉토리의 깊이를 나타낸다( 보통 1:2 정도면 충분함 )

    - key_zone : proxy_cache 지시어로 정의한 캐시 존을 이용할 수 있게 하며, size는 해당 캐시존의 크기이다.

    - inactive : 캐시된 응답이 지정한 시간만큼 사용되지 않으면 캐시로부터 제거된다.

    - max_size : 전체 캐시의 최대 크기를 정의한다.

   사용 예) proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache1:10m max_size=300M;

   default : 없음

   context : http

 

 : proxy_cache_key 지시어

   설명 : 캐시 항목들을 서로 구분하는 캐시 키(cache key)를 정의한다.

      캐시 키가 $request_uri로 설정되어있으면, request_uri이 같은 모든 요청은 같은 캐시 항목에 대응된다.

   syntax : proxy_cache_key string;

   사용 예) proxy_cache_key "$schema$host$request_uri $cookie_user";

   default : proxy_cache_key $schema$proxy_home$request_uri;

   context : http, server, location

 

 : proxy_cache_bypass 지시어

   설명 : 응답에 캐시를 적용하지 않을 조건을 지정한다.

            문자열 변수가 비어 있지 않거나 "0"이 아니면, 캐시로부터 응답을 가져오지 않는다.

            동일한 지시어로 proxy_no_cache 지시어가 있다.(syntax 동일함)

   syntax : proxy_cache_bypass string ... ;

   default : 없음.

   context : http, server, location

 

 : proxy_cache_method 지시어

   설명 : 캐시가 적용되는 HTTP 메소드를 정의한다.

   syntax : proxy_cache_method GET | HEAD | POST;

   default : proxy_cache_method GET HEAD;   // 기본적으로 GET, HEAD는 포함되며, 해제할 수 없다.

   context : http, server, location

 

 : proxy_cache_min_uses 지시어

   설명 : 요청이 캐시되는 데 필요한 최소 요청 횟수를 정의한다.

   syntax : proxy_cache_min_uses number;

   default : proxy_cache_min_uses 1;   // 기본적으로 한번의 요청만으로도 캐시된다.

                                                   같은 캐시키를 갖는 이후의 요청은 캐시된 응답을 수신하게 된다.

   context : http, server, location

 

 : proxy_cache_valid 지시어

   설명 : 프록시되는 서버(backend)로부터의 응답에 따른 캐시의 유효시간 설정

   syntax : proxy_cache_valid code1 [code2 ...] time;

   사용 예) proxy_cache_valid 404 1m;         // 응답코드 404는 1분 동안 캐시

               proxy_cache_valid 500 502 504 5m;   // 응답코드 500, 502, 504는 5분동안 캐시

               proxy_cache_valid 200 10;          // 응답코드 200은 10분이상 캐시

   default : 없음

   context : http, server, location



by 김현수

 

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 백엔드 서버 부하분산 설정  (0) 2014.07.28
Nginx 다중 백엔드 설정  (0) 2014.07.28
Nginx Reverse Proxy cache 설정  (0) 2014.05.13
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23
posted by lovelywas

Nginx는 이벤트 구동 구조와 C코드베이스 특성 때문에 다른 웹서버 솔루션에 비해 CPU, Memory등의 시스템 자원을 훨씬 적게 사용합니다. 이러한 특성을 살려 Nginx는 기본적인 형태로 reverse proxy용도로 가장 많이 사용을 하고 있습니다.

 

다음과 같은 간단한 설정만으로 Nginx를 Reverse Proxy 서버로 사용을 하여 유입되는 요청에의한 부하를 여러개의 백엔드 서버에 분산시키거나 동적파일 및 정적파일의 캐시를 제공함으로써 사용자에게 쾌적한 웹 환경을 제공을 할 수 있습니다.

 

예) 확장자 .jsp, context가 /hello 에대해, was에서 처리 하도록 다음과 같이 설정.

설정파일 : /nginx/nginx/conf/nginx.conf

server {
    listen 80
    server_name  localhost;

    location ~ \.jsp$ {
        include proxy.conf       

        proxy_pass http://127.0.0.1:8080/hello;
        index index.jsp;
    }

    location /hello {

        include proxy.conf
        proxy_pass http://127.0.0.1:8080/hello;

        index index.jsp;
    }

}

 

proxy.conf를 정의한 다음, include하여 사용을 합니다.

설정파일 : /nginx/nginx/conf/proxy.conf

proxy_redirect   off;
proxy_set_header  Host   $host;
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size  10m;
client_body_buffer_size  128k;
proxy_connect_timeout  90;
proxy_send_timeout  90;
proxy_read_timeout  90;
proxy_buffers   32 4k;

 

※ proxy_read_timeout : 프록시되는 서버 응답에 대한 읽기 타임아웃 설정으로 엔진엑스가 보낸 요청에 대한 응답을 얼마나 오랫동안 기다릴 것인가에 대한 설정


호출한 결과 다음과 같이 백엔드의 was에서 처리하는것을 확인할 수 있습니다.

호출 URL : http://localhost/index.jsp 

 

 

자주쓰는 지시어 정리

 : proxy_pass 지시어

   설명 : 서버(backend)로 전달되게 위치 지정.

   syntax : proxy_pass URL;

   사용 예) proxy_pass http://hostname:port/uri/;    // TCP  소켓을 사용할때의 구문

               proxy_pass http://unix:/tmp/backend.socket:/uri/;   // 유닉스 도메인 소켓을 사용할 때의 구문

               proxy_pass https://hostname:port/uri/;   // http요청을 https로 변경할때의 구문

               #업스트림 블록 사용예

               upstream ktdsoss {

                   server ktdswas1:7001;

                   server ktdswas2:7001;

               }

               location ~* \.jsp$ {

                   proxy_pass http://ktdsoss;

               }

   context : locaion, if in location, limit_except

 

 : proxy_method 지시어

   설명 : 백엔드 서버에 전달되는 요청의 HTTP 메소드에 대한 재정의

   syntax : proxy_method method;

   사용 예) proxy_method POST;      // 백엔드 서버로 전달되을 요청을 POST메소드로 변경하는 설정.


by 김현수

 

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx 다중 백엔드 설정  (0) 2014.07.28
Nginx Reverse Proxy cache 설정  (0) 2014.05.13
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23
Nginx 소개  (0) 2014.04.23
posted by lovelywas

Nginx 설치시 다음과 같은 옵션을 주어 필요한 모듈들을 설정하여 사용할 수 있습니다.

 

명령어 : /nginx/nginx-1.6.0/configure --help

 

권장옵션

  --with-debug

  --prefix=PATH                               set installation prefix

  --with-http_ssl_module                   enable ngx_http_ssl_module

  --with-http_realip_module               enable ngx_http_realip_module

  --with-http_stub_status_module       enable ngx_http_stub_status_module

  *proxy모듈은 별도로 옵션이 필요없습니다.

 

 [nginx@mwtest nginx-1.6.0]$ ./configure --help

  --help                             print this message

  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname

  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
                                     worker processes

  --builddir=DIR                     set build directory

  --with-rtsig_module                enable rtsig module
  --with-select_module               enable select module
  --without-select_module            disable select module
  --with-poll_module                 enable poll module
  --without-poll_module              disable poll module

  --with-file-aio                    enable file AIO support
  --with-ipv6                        enable IPv6 support

  --with-http_ssl_module             enable ngx_http_ssl_module
  --with-http_spdy_module            enable ngx_http_spdy_module
  --with-http_realip_module          enable ngx_http_realip_module
  --with-http_addition_module        enable ngx_http_addition_module
  --with-http_xslt_module            enable ngx_http_xslt_module
  --with-http_image_filter_module    enable ngx_http_image_filter_module
  --with-http_geoip_module           enable ngx_http_geoip_module
  --with-http_sub_module             enable ngx_http_sub_module
  --with-http_dav_module             enable ngx_http_dav_module
  --with-http_flv_module             enable ngx_http_flv_module
  --with-http_mp4_module             enable ngx_http_mp4_module
  --with-http_gunzip_module          enable ngx_http_gunzip_module
  --with-http_gzip_static_module     enable ngx_http_gzip_static_module
  --with-http_auth_request_module    enable ngx_http_auth_request_module
  --with-http_random_index_module    enable ngx_http_random_index_module
  --with-http_secure_link_module     enable ngx_http_secure_link_module
  --with-http_degradation_module     enable ngx_http_degradation_module
  --with-http_stub_status_module     enable ngx_http_stub_status_module

  --without-http_charset_module      disable ngx_http_charset_module
  --without-http_gzip_module         disable ngx_http_gzip_module
  --without-http_ssi_module          disable ngx_http_ssi_module
  --without-http_userid_module       disable ngx_http_userid_module
  --without-http_access_module       disable ngx_http_access_module
  --without-http_auth_basic_module   disable ngx_http_auth_basic_module
  --without-http_autoindex_module    disable ngx_http_autoindex_module
  --without-http_geo_module          disable ngx_http_geo_module
  --without-http_map_module          disable ngx_http_map_module
  --without-http_split_clients_module disable ngx_http_split_clients_module
  --without-http_referer_module      disable ngx_http_referer_module
  --without-http_rewrite_module      disable ngx_http_rewrite_module
  --without-http_proxy_module        disable ngx_http_proxy_module
  --without-http_fastcgi_module      disable ngx_http_fastcgi_module
  --without-http_uwsgi_module        disable ngx_http_uwsgi_module
  --without-http_scgi_module         disable ngx_http_scgi_module
  --without-http_memcached_module    disable ngx_http_memcached_module
  --without-http_limit_conn_module   disable ngx_http_limit_conn_module
  --without-http_limit_req_module    disable ngx_http_limit_req_module
  --without-http_empty_gif_module    disable ngx_http_empty_gif_module
  --without-http_browser_module      disable ngx_http_browser_module
  --without-http_upstream_ip_hash_module
                                     disable ngx_http_upstream_ip_hash_module
  --without-http_upstream_least_conn_module
                                     disable ngx_http_upstream_least_conn_module
  --without-http_upstream_keepalive_module
                                     disable ngx_http_upstream_keepalive_module

  --with-http_perl_module            enable ngx_http_perl_module
  --with-perl_modules_path=PATH      set Perl modules path
  --with-perl=PATH                   set perl binary pathname

  --http-log-path=PATH               set http access log pathname
  --http-client-body-temp-path=PATH  set path to store
                                     http client request body temporary files
  --http-proxy-temp-path=PATH        set path to store
                                     http proxy temporary files
  --http-fastcgi-temp-path=PATH      set path to store
                                     http fastcgi temporary files
  --http-uwsgi-temp-path=PATH        set path to store
                                     http uwsgi temporary files
  --http-scgi-temp-path=PATH         set path to store
                                     http scgi temporary files

  --without-http                     disable HTTP server
  --without-http-cache               disable HTTP cache

  --with-mail                        enable POP3/IMAP4/SMTP proxy module
  --with-mail_ssl_module             enable ngx_mail_ssl_module
  --without-mail_pop3_module         disable ngx_mail_pop3_module
  --without-mail_imap_module         disable ngx_mail_imap_module
  --without-mail_smtp_module         disable ngx_mail_smtp_module

  --with-google_perftools_module     enable ngx_google_perftools_module
  --with-cpp_test_module             enable ngx_cpp_test_module

  --add-module=PATH                  enable an external module

  --with-cc=PATH                     set C compiler pathname
  --with-cpp=PATH                    set C preprocessor pathname
  --with-cc-opt=OPTIONS              set additional C compiler options
  --with-ld-opt=OPTIONS              set additional linker options
  --with-cpu-opt=CPU                 build for the specified CPU, valid values:
                                     pentium, pentiumpro, pentium3, pentium4,
                                     athlon, opteron, sparc32, sparc64, ppc64

  --without-pcre                     disable PCRE library usage
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional build options for PCRE
  --with-pcre-jit                    build PCRE with JIT compilation support

  --with-md5=DIR                     set path to md5 library sources
  --with-md5-opt=OPTIONS             set additional build options for md5
  --with-md5-asm                     use md5 assembler sources

  --with-sha1=DIR                    set path to sha1 library sources
  --with-sha1-opt=OPTIONS            set additional build options for sha1
  --with-sha1-asm                    use sha1 assembler sources

  --with-zlib=DIR                    set path to zlib library sources
  --with-zlib-opt=OPTIONS            set additional build options for zlib
  --with-zlib-asm=CPU                use zlib assembler sources optimized
                                     for the specified CPU, valid values:
                                     pentium, pentiumpro

  --with-libatomic                   force libatomic_ops library usage
  --with-libatomic=DIR               set path to libatomic_ops library sources

  --with-openssl=DIR                 set path to OpenSSL library sources
  --with-openssl-opt=OPTIONS         set additional build options for OpenSSL

  --with-debug                       enable debug logging

 

by 김현수

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx Reverse Proxy cache 설정  (0) 2014.05.13
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23
Nginx 소개  (0) 2014.04.23
vi 명령어  (0) 2009.06.17
posted by lovelywas

운영체제 베포판의 저장소에는 대부분 Nginx 바이너리가 포함되어 있지만, 다음과 같은 방법을 통하여 최신 보안 및 성능 패치가 된 최신 Nginx 버전의 설치를 권장을 합니다. Nginx는 테스트 버전과 stable버전으로 구분이 되며,  (http://nginx.org/en/download.html)에서 내려 받을 수 있습니다.

 

● Nginx 설치 이미지 다운로드
  Nginx의 홈디렉토리에서 아래의 명령을 수행하여 Nginx 설치 이미지를 내려 받습니다.

 # cd /nginx
 # wget http://nginx.org/download/nginx-1.6.0.tar.gz
 # wget https://github.com/yaoweibin/nginx_ajp_module/archive/master.zip

 

● pcre, pcre-devel 패키지 설치
pcre 패키지를 설치 하지 않을시 nginx를 기동하고 아래의 에러로그를 확인할 수 있습니다.
ERROR: configure: error: pcre library is required 

 # su - (root 계정으로 수행)
 # yum install pcre pcre-devel

 

● Nginx 설치
받은 설치 이미지를 gzip과 tar를 사용하여 압축을 풀어 설치를 합니다.

 # gzip -d nginx-1.6.0.tar.gz
 # tar -xvf nginx-1.6.0.tar.gz
 # unzip master

 ※ nginx 설치 이미지 디렉토리 : /nginx/nginx-1.6.0
   nginx_ajp_module 설치 이미지 디렉토리 : /nginx/nginx_ajp_module-master

 # cd nginx-1.6.0
 # patch -p1 < /nginx/nginx_ajp_module-master/ajp.patch
 # ./configure --with-debug --prefix=/nginx/nginx --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --add-module=/nginx/nginx_ajp_module-master
 # make
 # make install

다음 명령어를 사용하여 위의 모듈외에 사용할 수 있는 모듈과 플래그 설정이 확인가능합니다.

명령어 : ./configure --help

 

● Nginx 환경설정

 # cd /nginx/nginx/conf
 # vi nginx.conf
   user nginx;  -> 설정

 

● SETUID 설정
  Nginx를 root계정이 아닌 nginx 계정으로 기동을 하기 위한 설정

 # su -  (root계정으로 로그인)
 # cd /nginx/nginx/sbin
 # chown root:sys nginx
 # chmod +s nginx

 

● Nginx 정상 설치 확인
  Nginx 정상 설치 확인 명령어 : /nginx/nginx/sbin/nginx -V

 [nginx@mwtest sbin]$ ./nginx -V
 nginx version: nginx/1.6.0
 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
 TLS SNI support enabled
 configure arguments: --with-debug --prefix=/nginx/nginx-1.6 --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --add-module=/nginx/nginx_ajp_module-master

 

● Nginx 기동

 # su - nginx
 # cd /nginx/nginx/sbin
 # ./nginx

 

● Nginx정상 기동 확인

● Nginx 중지

 # su - nginx
 # cd /nginx/nginx/sbin
 # ./nginx -s stop


by 김현수

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx Reverse Proxy cache 설정  (0) 2014.05.13
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23
Nginx 소개  (0) 2014.04.23
vi 명령어  (0) 2009.06.17
posted by lovelywas

인터넷 초창기에는 모든 관심이 웹 서버와 웹 클라이언트간에 요구되는 HTTP 프로토콜의 충실한 구현과 웹 브라우저와 사용자 간의 그래픽 사용자 인터페이스 구현, 그리고 브라우저의 자체의 풍부한 기능성 구현에 집중이 되었습니다.
인터넷 초기의 성능 이슈는 통신망 인프라에 집중이 되었고, 세월이 흘러 이제는 초고속 인터넷 시대가 되었고, 그동안 아파치는 수많은 웹서비스를 제공하는 웹서버로서 2013년 기준 55%이상 점유율을 가지며 확고부동하게 자리를 잡았습니다.
하지만 이제는 통신망이 아닌 다른 성능 이슈를 생각해야 할 시점입니다. 초고속 인터넷망을 통한 웹사이트 트래픽이 폭주하면 아파치가 이를 감당하지 못하고 있어 대안으로 차세대 웹서버의 도입을 한번쯤은 생각을 해 봐야합니다.
러시아 엔지니어 이고르 시셰프가 개발한 엔진엑스는 무료 오픈소스 웹서버이며, 모든 목적이 높은 성능에 맞춰져 있습니다.잘 사용하지 않는 기능은 과감하게 제외를 하였고, 처음부터 트래픽이 방대한 웹사이트 서비스를 위해 설계되었습니다. 또한 미리 설정된 개수의 worker 프로세스로 운영되고 각각의 프로세스는 싱글 스레드로 동작하여 아파치에 비해 CPU, 메모리 등 자원 사용률이 현격하게 낮은 이점이 있어 차세대 웹서버로 적합니다.

 

● NGINX 와 Apache의 성능 비교 자료
PHP어플리케이션 동작하는 속도 테스트
클라우드 환경에서의 속도 테스트
아파치 Event-MPM, Nginx 성능 비교자료

 

● NGINX 제공 기능
- handling of static files
- reverse proxy
- load balancing
- SSL support
- FastCGI
- Virtual Host
- FLV Streaming
- MP4 Streaming
- Web page access authentication
- gzip
- URL Rewriting
- Custom Logging
- SSI
- WebDAV 등.

 

● 2013년 웹서버 점유율
Nginx는 전년도 대비 0.58%상승하여 12.64%의 점유율로 꾸준한 증가추세를 보이고 있습니다.

 

● NGINX를 사용중인 사이트
Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard, MaxCDN

 

● 참고
Nginx 홈페이지
Nginx 한국 커뮤니티(facebook group)
Nginx소개와 사용현황
도서 : Nginx HTTP Server 한국어판


by 김현수

'1. 미들웨어이야기 > 04. Nginx' 카테고리의 다른 글

Nginx Reverse Proxy cache 설정  (0) 2014.05.13
Nginx JBoss 연동(Reverse Proxy 사용)  (0) 2014.05.07
Nginx 설치 / -configure 옵션  (0) 2014.05.07
Nginx 설치  (0) 2014.04.23
Nginx 소개  (0) 2014.04.23
vi 명령어  (0) 2009.06.17
posted by lovelywas
prev 1 next