Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Día de Ruru

[BE] Nginx 공부하기 본문

백엔드

[BE] Nginx 공부하기

공대루루 2023. 12. 12. 20:43

proxy

클라이언트와 서버 간의 통신을 대리 수행하는 중계 서버이며 캐시, 보안, 트래픽 분산 등의 이유로 사용한다.

  • Foward Proxy
    • 캐싱 : 클라이언트가 요청한 내용을 캐싱
    • 익명성 : Server는 응답 받은 요청을 누가 보냈는지 알 수 없다.
    • → Server가 받은 요청 IP = Forward Proxy IP
  • Reverse Proxy
    • 캐싱
    • 보안 : 서버 정보를 클라이언트로부터 숨길 수 있다.
    • → 실제 서버의 IP 노출을 막을 수 있음
    • 로드 밸런싱 (부하 분산) : 여러 대의 서버가 요청을 나누어 처리할 수 있도록 요청을 나누어 줄 수 있다.

Nginx 세팅하기

  1. 실행하기
     sudo systemctl start nginx
    
     sudo systemctl status nginx
    
     sudo systemctl restart nginx
    실행시킨 후 curl로 테스트 해볼 수 있다.
  2. curl -v http://localhost:80 #nginx 기본포트
  3. nginx는 demon 으로 실행되기 때문에 systemctl 로 서비스를 관리할 수 있다.
  4. /etc/nginx
    • worker_processes : 몇 개의 thread가 사용될 지 정의(CPU 코어 수에 맞추는 것을 권장)
    • include : 외부 conf 파일을 가져올 때 사용
    • → 모듈에 따라 다른 파일에 작성하고 include 해서 사용하기도 함
    • events {} : 일반적인 connection process 설정
      • worker_connections : worker process 하나 당 몇 개의 connection 을 처리할 지 설정
    • http {} : HTTP traffic
      • location : 처리할 URI 형식 표기
  • nginx.conf 예시
user nginx;
worker_processes auto; 
error_log /var/log/nginx/error.log warn; 
pid 	  /var/run/nginx.pid; 
events { 
	worker_connections 2048; 
    } 
http { 
	upstream servers { 
    					server [ip:port]; 
                        server [ip:port]; 
                        } 
    server { 
    		listen 80; # '/'경로로 오는 요청을 upstream 의 '/'경로로 포워딩 
            location / { 
                proxy_pass http://servers; 
                } 
            } 
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" ' 
                    '"$http_user_agent" "$http_x_forwarded_for"'; 
    access_log /var/log/nginx/access.log main; 
    sendfile on; 
    keepalive_timeout 65; 
    # include /etc/nginx/conf.d/*.conf; 
}
  1. nginx를 설치하면 /etc/nginx 에 있는 nginx.conf 파일을 수정해서 설정을 할 수 있다.
  2. nginx는 4개의 로드 밸런싱 메서드를 제공한다.
    • 라운드 로빈(Round-robin) : 모든 서버에 동등하게 요청 분산
    • upstream test_proxy { server web-01; server web-02; }
    • least_conn : 연결이 가장 작은 서버로 요청을 보낸다.
    • upstream test_proxy { least_conn; server web-01; server web-02; }
    • ip_hash : 클라이언트 IP 주소를 기준으로 요청 분배
    • upstream test_proxy { ip_hash; server web-01; server web-02; }
    • hash : 유저가 정의한 key나 변수 혹은 이들의 조합을 해시해서 분산 (← ?)
    • upstream test_proxy { hash $request_uri consistent; server web-01; server web-02; }

NginX로 Reverse-Proxy 서버 만들기

[Nginx] 리버스 프록시(Reverse Proxy) 개념 및 사용법

Nginx를 설치하고 역방향 프록시 서버로 구성 - ASP.NET Core

[NGINX] 꼭 알아야 할 configuration 기초 개념!

'백엔드' 카테고리의 다른 글

[BE] SQL 테이블 내 중복 데이터 제거  (0) 2024.04.21
[BE] SQL 데이터 통계 조회  (0) 2024.04.21
[BE] DNS란 무엇일까?  (0) 2023.08.06
Comments