1. 미들웨어이야기/04. Nginx 17

Nginx 대역폭(전송속도) 제한

사이트상에 있는 정적인 파일들에 대해서 어느 특정 사용자가 대역폭을 차지하고 있을 수 있는데,다음과 같은 방법을 사용하여 네트워크 대역폭의 제한을 설정 할 수 있습니다. server { server_name www.example1.com; location /download/ { // 모든 사용자에 대해 /download 디렉토리의 파일 다운로드 속도를 10k 로 제한 limit_rate 10k; root /var/www.www.example1.com/download/; } ...} by hyenas (11월)

Nginx IP 접근제어 설정

이번 강의에서는 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월)

Nginx 로그 로테이션 설정

이번 강의에서는 로그 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} 기존의 로그파일을 새로운 파일명으로 바꾸고 압축을 합니다.방금 이름을 바꾼 로그 파일을 닫고 새로운 로그 파일에 기록을 하도록엔진엑스 마스터 프로..

Nginx 가상 호스트별 로그 설정

가상 호스트에 각각 로그를 설정하는 예제 입니다. 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 /..

Nginx 다중 로그 설정

동적인 요청에 대한 로그는 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_by..

Nginx 로그 설정

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 정상이지만 중요한 상황 In..

Nginx와 OpenSSL 보완 취약점

2014년 4월 8일 에는 OpenSSL HeartBleed(CVE-2014-0160)버그 인해 긴급하게 OpenSSL버전을 최신버전으로 업그레이드를 하였었는데, 이후에 6월 5일 추가적인 보안 이슈가 생겨서 다시 긴급하게 OpenSSL버전을 업그레이드 하였습니다. 1. 권장하는 openSSL 버전 OpenSSL 0.9.8 SSL/TLS -> 0.9.8za OpenSSL 1.0.0 SSL/TLS -> 1.0.0m OpenSSL 1.0.1 SSL/TLS -> 1.0.1h 2. OpenSSL버전 확인하는 방법 1) 'openssl version' 명령어를 사용 (적합하지 않음) 다양한 버전의 openssl이 설치가 되어 있을 경우 버전을 명확하게 확인을 할 수가 없습니다. 2) Nginx가 사용하는 libr..

Nginx 실시간 모니터링 (ngxtop)

Apache 는 mod_status모듈을 사용하여 /server-status를 사용을 하여 실시간으로 모니터링을 할 수 있는데, nginx는 시스템 자원을 모니터링하는 top과 같이 Nginx의 access로그를 파싱하여 실시간으로 모니터링이 가능합니다. 1. ngxtop 설치 이미지 다운로드 wget https://github.com/lebinh/ngxtop/archive/master.zip 2. ngxtop 설치 pip install ngxtop 3. ngxtop 실행(기본화면) 4. top client ip 확인 5. 특정 응답코드 확인 6. remote에 있는 access로그 모니터링 방법ssh를 사용해서 tail을 걸은다음 모니터링이 가능합니다. 정말 유용한 기능인것 같습니다. 참고 URL : ..

Nginx 다수의 서드파티 모듈 설치방법

NGINX 에서 서드파티 모듈을 설치하기 위해서는 NGIX를 compile시 --add-module 지시어를 사용을 하는데, 다수의 서드파티 모듈들을 지정을 하기 위해서는 각각의 모듈에 대해서 --add-module 을 사용을 해야 합니다. 예제) 1. NGINX 부하분산 모듈(nginx-upstream-fair) wget https://github.com/gnosek/nginx-upstream-fair/archive/master.zip 2. NGIX AJP모듈(nginx_ajp_module) wget https://github.com/yaoweibin/nginx_ajp_module/archive/master.zip 위의 두가지 서드파티 모듈에 대해서 다음과 같이 옵션을 주고 compile을 할 수 있습..

Nginx 백엔드 서버 부하분산 설정

다수의 upstream 서버를 사용하여 라운드로빈 기능은 구현이 가능하나, 이 upstream 서버들간의 부하를 적절게 설정을 하기 위해서는 다음과 같은 방법을 통한 부하분산(load balancing) 설정이 필요합니다. 부하분산을 위해서는 'upstream fair module' 이라는 서드파티 모듈의 설치가 필요합니다. upstream fair module은 라운드로빈 방식으로 비교적 한가한 서버를 체크하여 그 서버에게 서비스를 요청을 합니다. 1. 모듈을 다운로드 합니다. wget http://github.com/gnosek/nginx-upstream-fair/tarball/master 2. 엔진엑스를 새 모듈과 함께 컴파일을 합니다. tar xvzf ./master cd /nginx/src/ng..