참고사이트: http://kyounginserverstudy.blogspot.kr/2016/08/nginx.html
NGINX는 차세대 웹서버로 불린다. 위의 그래프를 통해서 알 수 있듯이 Apache의 독주에 제동을 걸고 있다. NGINX의 특징은 한마디로 정의하면 아래와 같다.
더 적은 자원으로 더 빠르게 데이터를 서비스 할 수 있다.
웹 응용 프로그램 서버에서 Nginx 역할
- 응용프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
- 응용프로그램 서버가 처리하지 않는 이미지나 css 파일과 같은 정적 파일을 처리하는 HTTP 서버로서의 역할
– 리버스 프록시 역할
클라이언트 요청을 각 응용프로그램 서버에 배분해 그결과를 클라이언트에 반환하는 것이다. 클라이언트의 요청은 일단 모두 리버스 프록시가 받아 응용프로그램 서버로 보내고그 응답을 버퍼링해 클라이언트에 반환한다. 일반적으로 리버스 프록시는 각 응용프로그램 서버에 요청을 배분해 부하를 분산하고 캐시 서버로서의 역할을 하지만 웹 응용프로그램 서버에 리버스 프록시를 두는 이유는 주로 요청에 대한 버퍼링 때문이다. 응용프로그램 서버가 직접 클라이언트와 통신할 경우 사용자에게 응답을 반환할 때까지 응용프로그램 서버가 커넥션을 가져야 한다. 그러므로 단일 프로세스가 처리할 수 있는 요청 수를 제한하는 응용프로그램 서버에서는 통신 속도가 느린 클라이언트의 접속 때문에 1개의 프로세스가 응답 대기 상태가 돼버린다. 리버스 프록시는 응용프로그램 서버의 응답을 버퍼링해 응용프로그램 서버가 각 클라이언트와 통신을 신경 쓰지 않고 크게 지연 없이 입출력을 종료하고 다음 커넥션을 처리할 수 있다.
– 정적 파일을 처리하는 HTTP 서버
응용프로그램 서버가 이미지 파일이나 css 파일 같은 정적파일을 요청을 처리가게 되면 동적처리가 주 목적인 서버의 리소스를 낭비하게 된다. 이와 같은 정적 파일의 요청을 처리하는 Nginx의 두번째 역할이다. (location 지시어를 사용하여 요청을 배분한다.)
기본적인 지시어
*** Nginx기본적인 처리 흐름
- host header,port에 어떤 server지시어가 일치하는지 할당
- 일치하는 server 지시어의 처리를 수행
- server 지시어으 일치하는 location 컨텍스트의 처리를 수행
HTTP server를 동작시키는데 필요한 지시어
- server 지시어
http서버의 가상 호스트를 정의. server 컨텍스트를 정의
- location 지시어
지정한 조건에 일치하는 경로에 대한 처리를 작성하기 위해서 사용
location /image/ {
… // /image/이하 파일에 적용할 설정
}
경로 기록 외 정규 표현등 쓸수 있다. 정규표현을 사용하면 경로에 따라 동작을 배분 설정도 간단히 작성 가능
- root 지시어
실제 콘텐츠가 있는 폴더를 지정,
root지시어는 절대 경로이거나 Nginx 설치 폴더에 대한 상대 경로를 지정,
root 폴더는 http 컨텍스트, server 컨텍스트, location컨텍스트에 작성 할 수 있다.
- error_page 지시어
에러 시에 표시되는 url을 지정
1. 인수는 공백 문자로 구분해
정렬된 http 상태 코드를 지정하고,
마지막 인수로 그 상태 코드와 일치하는 경우에 표시할 url을 지정
error_page 404 /404.html error_page 502 503 504 /5xx.html
// 502.503.504일때 /5xx.html을 표시
- @로 시작하는 경로를 사용해 다른 서버로 대체 설정 할 수 있다.
@로 시작하는 경로는 특별한 location으로 Nginx 내부에서만 사용.
error_page 404 @fallback; location @fallback{ proxy_pass
http://fallback_server; // 이 서버의 파일을 찾을 수 없을 때는 fallback_server로 정의한 서버에 요청 }
His Story and My story – I belong to Jesus