ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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는 백엔드 서버로부터 받은 응답을 클라이언트에게 투명하게 제공합니다.

     

     

     

     

    댓글

Designed by Tistory.