nginx 프록시 설정

.
유재민's avatar
Apr 02, 2024
nginx 프록시 설정

실제 운영용 nginx.conf 파일은 Github > Server 프로젝트(링크) 참고

설정

설명

limit_conn_zone

$binary_remote_addr zone=ddos_conn:10m;

원격 ip 요청을 저장하는 ddos_conn이라는 메모리 영역을 10m 잡음

limit_req_zone

$binary_remote_addr zone=ddos_req:10m rate=10r/s;

원격 ip 요청을 저장하는 ddos_req라는 메모리 영역을 10m 잡고 초당 요청을 10회로 제한함

upstream lb_sild_server

least_conn;

server 127.0.0.1:13000; server 127.0.0.1:13001;

13000, 13001 포트 중에 연결이 적은 쪽으로 로드밸런싱 

upstream lb_sild_bo

least_conn;

server 127.0.0.1:8000; server 127.0.0.1:8001;

8000, 8001 포트 중에 연결이 적은 쪽으로 로드밸런싱 

ssl_certificate, ssl_certificate_key

/etc/letsencrypt/live/도메인주소/fullchain.pem;

/etc/letsencrypt/live/도메인주소/privkey.pem;

ssl 보안을 위한 인증서(letsencrypt 사용함)

ssl_session_cache

shared:SSL:1m;

1m 크기의 영역을 잡음(이론상 4000세션 유지)

ssl_prefer_server_ciphers

on;

암호화 옵션 on

ssl_session_timeout

5m;

5분동안 세션 유지

ssl

on;

proxy_set_header 

X-Forwarded-For $proxy_add_x_forwarded_for;
X-Forwarded-Proto https;
X-Real-IP $remote_addr;
HOST $http_host;
X-NginX-Proxy true;
Connection "";

프록시/로드밸런서로 들어오는 요청에 헤더들을 남김

proxy_connect_timeout
proxy_read_timeout
proxy_send_timeout

3000;

프록시 연결 타임아웃을 3000초

proxy_pass

주소

해당 주소로 프록시태움

proxy_buffer_size

128k

응답 데이터를 읽는 첫 부분의 크기

proxy_buffers

4 256k

응답 데이터를 읽는 버퍼의 수와 크기

proxy_busy_buffers_size

256k

버퍼가 이 값을 초과하면 버퍼를 비우고, 클라이언트에게 알림

limit_conn

ddos_conn 10;

ddos_conn이라는 메모리 영역을 사용해서 동시 10개 연결까지만 허용

limit_req

zone=ddos_req burst=5

ddos_req라는 메모리영역의 초당 요청에 추가로 최대 +5회까지 사용

valid_referers

none blocked server_names *.sild.app;

*.sild.app으로 들어오는 요청만 차단하지 않겠다.

client_max_body_size

100M

클라이언트로부터 들어오는 바디 사이즈는 최대 100(이미지 업로드 제한)

allow

ip

해당 ip만 허용

deny

all

allow 제외하고 모두 차단

Share article

jaeminlog