-
TIL-2024.07.06 - Nginx - 001. Nginx 기초> DevOps/Nginx 2024. 7. 6. 21:29
목표
Nginx 란?
> Nginx는 고성능 HTTP 및 리버스 프록시 서버로, 이메일(IMAP/POP3) 프록시 서버 기능도 제공하는 Open-source Web Server
기본 HTTP 설정 파일 설명
> nginx 설치 시 /etc/nginx/conf.d/default.conf 에 기본 HTTP 설정파일이 생성
# HTTP protocol 과 80 포트를 이용해 /usr/share/nginx/html root 경로에 저장된 정적 콘텐츠 제공 server { listen 80 default_server; server_name www.example.com; // 이 도메인으로 들어오는 요청은 이 서버 블록이 처리 # location은 특정 URI 패턴에 대한 설정을 정의 # 기본블록(/) : 클라이언트가 http://www.example.com/foo/bar.html을 요청 시, Nginx는 /usr/share/nginx/html/foo/bar.html ) location / { root /usr/share/nginx/html # alias /usr/share/nginx/html index index.html index.htm try_files $uri $uri/ =404; } # api블록(/api): /api/로 시작하는 요청을 http://backend_api_server로 전달 (> 리버스 프록시라 함) location /api/ { proxy_pass http://backend_api_server; # /api/로 시작하는 요청을 http://backend_api_server(프록시 요청을 처리할 백엔드 서버의 주소)로 전달 proxy_set_header Host $host; # 클라이언트가 요청한 원래 도메인 이름을 백엔드 서버에 전달 (e.g. http://www.example.com/api/foo를 요청하면 Host: www.example.com 헤더가 백엔드 서버로 전달) proxy_set_header X-Real-IP $remote_addr; # 헤더는 백엔드 서버가 실제 클라이언트의 IP 주소를 알 수 있도록 전달합니다. 백엔드 서버는 이 정보를 사용하여 클라이언트의 위치나 신원을 파악 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 헤더는 프록시 체인을 통해 전달된 원래 클라이언트의 IP 주소를 추적하는 데 사용 proxy_set_header X-Forwarded-Proto $scheme; # 백엔드 서버가 원본 요청이 어떤 프로토콜을 사용했는지 알 수 있도록 합니다. 이는 백엔드 서버가 리디렉션을 설정하거나, 보안 설정을 결정하는 데 유용 } }
리버스 프록시 서버
프록시란 대리라는 의미로, 정보를 대신 전달해주는 주체 리버스 프록시 서버는 "클라이언트로부터의 요청을 대신 받아서 서버에 전달하는 서버". 1. 클라이언트 요청 받기: 클라이언트가 요청을 보내면, 먼저 리버스 프록시 서버(Nginx)가 이 요청을 받습니다. 2. 요청 전달: Nginx는 받은 요청을 실제 서버(백엔드 서버)로 전달합니다. 이 백엔드 서버는 클라이언트가 원하는 리소스(예: 웹 페이지, 이미지, 데이터)를 제공합니다. 3. 응답 전달: 백엔드 서버에서 받은 응답을 다시 클라이언트에게 전달합니다. 이 과정에서 Nginx는 백엔드 서버로부터 받은 응답을 클라이언트에게 투명하게 제공합니다.