Nginx12 HTTP1.0/HTTP1.1을 기반으로 하는 다이나믹 리버스 프록시 이번에는 Nginx의 핵심 기능 중 하나인 리버스 프록시(Reverse Proxy) 에 대해 파악하고 정리해보겠다. 리버스 프록시란?클라이언트의 요청을 받아 내부의 백엔드 서버로 전달하고, 백엔드의 응답을 다시 클라이언트에게 돌려주는 중간 서버다.즉, 클라이언트와 백엔드 사이에서 요청을 중개하는 역할을 수행하는 것이다. 이와 같은 구조에서 클라이언트는 뒤에 어떤 서버가 존재하는 지 모르며, 굳이 알 필요도 없게 된다. 리버스 프록시 vs 포워드 프록시프록시에는 두 종류가 있으며, 누구를 대신하는가에 따라 구분된다. 포워드 프록시 — 클라이언트 대신 나가는 대리인회사에서 보안 정책상 직원이 인터넷에 직접 접근하지 못하고, 회사 프록시 서버를 통해서만 나갈 수 있는 상황을 생각해보자.직원(클라이언트) →.. Nginx 2026. 7. 8. Redirection과 Rewrite Directive 이전 글에서는 Virtual Host를 통해 하나의 Nginx에서 여러 도메인을 운영하는 방법을 학습하였다.이번에는 클라이언트의 요청 URI를 변경하는 두 가지 방법인 return(리다이렉트) 과 rewrite 에 대해 파악하고 정리해보겠다. 웹 서비스를 운영하다보면, 다양한 이유로 인해서 URL을 변경하는 경우가 있을 것이다.예를 들어, 사이트 구조를 변경/개편하거나 HTTP를 HTTPS로 강제하거나 오래된 URL을 새로운 도메인으로 변경하는 등 이유가 있을 것이다. Rewrite vs Redirect먼저 rewrite와 redirect의 차이에 대해서 살펴보자.두 방식은 URI를 변경한다는 목적은 같지만, 동작 방식이 근본적으로 다르다. Redirect리다이랙트는 클라이언트에게 ' 다른 URL로 다시.. Nginx 2026. 6. 18. 다중 도메인 호스팅을 위한 Virtual Host ( Server Block ) 일반적으로 서버 한 대에서 여러 도메인의 사이트를 운영하는 것이 일반적인 형태이다. (도메인마다 별도의 서버를 두면 단순하지만 현실적으로 비용, 관리 효율 등의 다양한 이유로 서버 한 대에서 여러 도메인의 사이트를 운영한다.) Nginx의 Server Block여러 도메인 사이트 운영을 Nginx의 관점에서 보면, 클라이언트가 여러 도메인에 보내는 요청이 하나의 Nginx 서버에서 처리하고 응답 가능하도록 만드는 것이다. 이것이 Virtual Host 이며, Nginx에서는 server block 하나가 곧 하나의 가상 호스트에 해당한다.위의 이미지 구조처럼 클라이언트가 example.com, blog.example.com, api.example.com 중 어느 도메인으로 요청을 보내더라도, 하나의 N.. Nginx 2026. 6. 9. 정적 파일 서빙 Path Matching 기법 - root와 alias Nginx에서 정적 파일을 서빙할 때, 경로 설정에 있어 사용되는 옵션들에 대해서 알아보자. 정적 파일 서빙에 있어서, 특정 요청을 특정 파일 경로에 도달하도록 설정하는 것은 중요한 부분이다. 그리고 이 부분을 결정해주는 것이 Nginx에서는 root 와 alias라는 개념이다. 두 옵션 모두 '클라이언트가 요청한 URI를 디스크의 어느 경로에서 찾을지'를 지정하지만,경로를 조합하는 방식에 있어 차이가 있다. 이 두 옵션의 차이와 설정법에 대해 정리해보겠다. root 옵션 설정root 옵션은 설정한 경로 뒤에 요청 URI를 그대로 이어 붙여서 최종 파일 경로를 만든다. 이를 실습하기 위해서 아래와 같이 conf 파일을 삭제하고 다시 생성하여 접근한다. 아래는 conf 파일의 설정 내용이다. 이처럼 co.. Nginx 2026. 5. 28. 네트워크 전송 관점에서 최적화를 위한 압축 설정 템플릿 이전 글에서는 sendfile, tcp_nopush, tcp_nodelay 등 데이터를 어떻게 전송할지에 대한 최적화를 다뤘다. 이번에 다룰 압축(Compression)은 네트워크 전송 관점과 CPU 사용량 사이에서의 트레이드 오프 고려가 필요한 내용으로, 단지 Nginx에 국한되지 않고 일반 api서버나 데이터 가공 모듈 등에서 적용 가능한 사항들을 다룬다.그리고 특히 텍스트 기반의 데이터에서 적용 시, 효율적일 수 있는 내용이다. CPU 사용량 vs 네트워크 전송량 데이터를 압축하여, 전송한다는 것은 서버 입장에서 압축 연산 비용을 발생시키는 것이다. 이는 CPU 사용량을 야기하는 것이며, 동시에 네트워크로 보내는 데이터의 크기가 줄어들어 전송량도 감소한다. 따라서 서버의 CPU 여유가 있고, 네트워.. Nginx 2026. 5. 21. Nginx 성능 최적화 설정과 기본 템플릿 이전 글에서는 worker_processes와 worker_connections를 통해 Nginx가 처리할 수 있는 최대 동시 연결 수를 결정하는 방법을 살펴봤다.이번 글에서는 그보다 한 단계 더 나아가, 실제 데이터를 얼마나 효율적으로 전송하는지에 영향을 주는 성능 최적화 설정들을 다룬다. 그리고 이 설정들을 모두 담은 기본 nginx.conf 템플릿을 작성하여 살펴보자. sendfile - 파일 전송 방식 최적화정적 파일(이미지, CSS, JS 등)을 클라이언트에게 전송할 때, Nginx가 내부적으로 어떤 방식으로 파일을 읽고 보내는지가 성능에 큰 영향을 미친다. sendfile 설정 방식에 따른 파일 전달 방식 기본 방식인 sendfile off 파일 데이터가 커널 버퍼 → 사용자 공간(Nginx).. Nginx 2026. 5. 16. Nginx Process Model - 처리량 관점의 설정 이전 글에서는 include 디렉티브로 설정 파일을 구조적으로 분리하는 방법을 살펴봤다.이번 글에서는 한 발 더 나아가, Nginx가 실제로 얼마나 많은 요청을 동시에 처리할 수 있는지를 결정하는 Process Model 설정을 살펴본다.nginx.conf의 최상단에서 마주치는 worker_processes와 worker_connections가 바로 그 핵심이다. Nginx의 Process 구조Nginx는 실행되면 크게 두 종류의 프로세스로 동작한다. Master Process는 설정 파일을 읽고, Worker Process를 생성·관리하는 관리자 역할을 한다. 실제 클라이언트 요청은 직접 처리하지 않는다.Worker Process가 실제로 클라이언트의 요청을 받아서 처리한다. 클라이언트 요청은 Mast.. Nginx 2026. 5. 14. Nginx include 디렉티브 - 설정 파일 분리와 구조화 이전 글에서는 Nginx의 계층 구조 속에서 설정이 어떻게 상속되는지를 살펴봤다. 상속을 잘 활용하면 공통 설정을 한 곳에 모을 수 있는데, 서버 규모가 커지면 nginx.conf 하나에 모든 설정을 몰아넣는 것만으로는 한계가 생긴다. 가상 호스트가 10개, 20개가 되거나 upstream 설정, SSL 설정, 보안 헤더 설정이 뒤섞이기 시작하면 파일 하나가 수백 줄을 넘어가게 된다. 이 문제를 해결하는 것이 바로 include 디렉티브다. include 디렉티브란?include는 다른 파일의 내용을 현재 위치에 그대로 삽입하는 디렉티브다.프로그래밍 언어로 따지면 Java의 import와 비슷한 개념으로, Nginx가 설정 파일을 파싱할 때, include를 만나면 해당 파일을 읽어서 그 자리에 내용을 .. Nginx 2026. 5. 12. Nginx의 계층 구조와 상속 및 재정의 방식 이전 글에서는 Nginx의 설정 파일이 Block 단위로 구성된다는 것과, 각 블록이 포함 관계를 가진다는 것을 학습하였다.이번에는 그 Block 단위의 포함 관계에서 자연스럽게 이어지는 개념인 상속(Inheritance) 에 대해 파악하고 정리해보겠다. 계층 구조 복습먼저 간단하게 이전 글에서 다룬 Nginx의 블록 구조를 짚고 가자.Main Context└── events { } └── http { } └── server { } └── location { }위와 같은 구조에서 흐름은 Main → http → server → location 순서로 계층이 내려간다.그리고 이 계층 구조에는 중요한 성질이 하나 있다.상위 블록에서 정의한 설정은, 하위 블록에 자동으로 상속된.. Nginx 2026. 5. 10. Nginx의 설정파일 구성 방법과 원리( .conf 파일 ) Nginx를 잘 다루기 위해서는 설정 구조 파일에 대한 이해와 사용할 수 있는 방법들이나 명령어들을 잘 파악하는 것이 중요하다.따라서 이를 위한 내용들을 학습하고 정리한다. Nginx.conf 파일 구성 하기( .conf 파일 )Nginx에서 가장 중요한 설정 파일인 conf 파일에 대해서 다뤄보자. 먼저, Nginx의 학습에 있어 가장 먼저 이해가 필요한 부분은 Nginx의 설정파일은 Block 단위라는 것이다.Nginx는 기본적으로 Block 단위로 설정을 생성하며, 각 블록 단위는 포함관계를 지니고 각 단계에서의 옵션을 설정할 수 있다.그리고 이 Block 단위의 설정 파일은 아래와 같은 모식도로 구성된다. 모식도를 살펴보면 Main Context는 가장 최상위의 Block 단위로 해당 영역에서.. Nginx 2026. 5. 10. Nginx의 설치 및 환경 구성( 기본적인 명령어 및 파일구성 / 무중단 배포를 위한 재시작 명령어 ) Nginx 설치 및 사용하기(feat. Docker)Nginx를 설치하고 사용하는 방법에 대해서 간단히 알아보자.먼저 현재 Window OS 기반의 컴퓨터를 사용하기 때문에 도커를 사용하여 Nginx를 설치하고 실행한다. Docker 실행 명령어 입력하기docker run --name my-nginx -d -p 80:80 nginx Nginx 실행파일에 접근 및 분석 아래와 같은 명렁어 과정을 통해 도커를 띄운 Nginx 실행 파일에 접근한다. Nginx 실행 파일 목록 설치된 Nginx 실행 파일 목록에는 위와 같은 파일들이 있으며파일 목록 중에서 nginx.conf 파일은 메인 설정 파일로 가장 중추적인 역할을 담당하는 파일이다. Nginx의 모든 설정이 해당 파일에서 시작되는 것이기 때문이다... Nginx 2026. 5. 8. Nginx의 핵심적인 개념 Nginx란? Nginx는 (1) 웹 서버 / (2) 리버스 프록시 / (3) 로드 밸런서 / (4) HTTP 캐시 등의 기능을 제공해주는 소프트웨어로 23년 기준으로 전 세계 가장 인기있는 웹서버 중 하나로 점유율 1위에 위치하여 사용되는 소프트웨어이다. Nginx 사용 이유그렇다면 이처럼 Nginx가 웹서버로 가장 많이 사용되는 이유는 무엇일까?해당 부분은 C10K (connection 10,000)문제에 기인하여 찾아볼 수 있다. C10K 문제 관련 글(링크)더보기https://oliveyoung.tech/2023-10-02/c10-problem/ Apache VS NGINX위의 C10K 문제는 쉽게 말하면, 어떻게 동시에 1만명이 접속 가능한 서버를 만들 것인가에 대한 문제이다.해당 문제가 .. Nginx 2026. 5. 7. 이전 1 다음