nginx
server {
listen 80;
server_name example.com;
location /static {
root /path/to/static/files;
index index.html;
try_files $uri $uri/ =404; // 정적 파일 요청 처리
}
}
위 설정은 /static 경로로 들어오는 요청을 정적 파일로 처리하는 예제입니다. /path/to/static/files 디렉토리에 있는 파일들을 제공하며, index.html이 기본 문서로 사용됩니다.
리버스 프록시:
nginx
server {
listen 80;
server_name example.com;
location /api {
proxy_pass http://backend-server:8000; // 백엔드 서버로 요청 전달
proxy_set_header Host $host; // 호스트 헤더 전달
proxy_set_header X-Real-IP $remote_addr; // 실제 IP 주소 전달
}
}
위 설정은 /api 경로로 들어오는 요청을 백엔드 서버(http://backend-server:8000)로 전달하는 리버스 프록시 예제입니다. 클라이언트의 호스트 헤더와 실제 IP 주소를 백엔드 서버에 전달합니다.
로드 밸런싱:
nginx
http {
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
server unix:/tmp/backend3.sock;
ip_hash; // 세션 유지를 위해 IP 해싱 사용
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
1
Ngnix 프록시는 왜 사용하는가?
프록시(Proxy):
보안 강화: 프록시 서버는 클라이언트와 실제 서버 간에 중개 역할을 하며, 클라이언트와 서버 사이의 직접적인 연결을 막을 수 있습니다. 이를 통해 웹 서버를 숨기고 보안을 향상시킬 수 있습니다.
로깅 및 모니터링: 프록시는 클라이언트 요청 및 서버 응답을 기록하고 모니터링할 수 있으므로, 트래픽 분석, 오류 디버깅 및 보안 이슈 탐지에 도움이 됩니다.
캐싱: 프록시는 이전에 받은 응답을 캐싱하여 동일한 요청에 대한 서버 부하를 줄일 수 있습니다. 이는 빠른 응답과 대역폭 절약에 도움이 됩니다.
로드 밸런서(Load Balancer) 란 무엇인가?
부하 분산: 로드 밸런서는 여러 서버 간에 트래픽을 균등하게 분배하여 서버 부하를 분산합니다. 이로 인해 서비스의 가용성과 성능이 향상됩니다. 장애 처리: 하나 이상의 서버가 고장 났을 때 로드 밸런서는 요청을 정상적으로 작동하는 서버로 리디렉션하여 서비스 중단을 방지합니다. 확장성: 로드 밸런서를 사용하면 서버를 쉽게 추가하고 확장할 수 있으므로, 더 많은 트래픽을 처리할 수 있습니다.
Ngnix의 사용목적
웹 서버 및 리버스 프록시: Nginx는 웹 서버로 사용될 수 있으며, 정적 및 동적 콘텐츠를 서빙하거나 웹 응용 프로그램 서버와 통신하기 위한 리버스 프록시로 사용됩니다. 높은 성능: Nginx는 가벼우면서도 뛰어난 성능을 제공하며, 동시 연결 및 요청 처리에 능합니다. 유연성: Nginx는 다양한 기능을 확장 가능한 모듈로 지원하며, 커스터마이징이 쉽습니다.
Reverse Proxy (로드 밸런서)
부하 분산 부하를 계산하고 분산하는 알고리즘은 다양함
최소 시간(Least Time) 로드 밸런싱
이민 심사 창구 위에는 최근 10분간 처리된 여행객 수를 나타내는 카운터가 있다면 어떨까요? 그러면 가이드는 큐의 길이와 얼마나 빨리 처리되고 있는지를 기반으로 여행객을 해당 큐로 안내할 수 있습니다. 이것은 더욱 효과적인 부하 분산 방법
정리, 예상으로 발생하는 최소 시간으로 로드밸런싱을 할수있는 시간을 수치화 한 값
NGNIX 로드 밸런싱에 부하 분산 알고리즘이 필요한이유
Power of Two Choices” 접근 방식은 단일 로드 밸런서에서는 효과적이지 않지만 독립적인 로드 밸런서의 수가 많아질 때 발생할 수 있는 쏠림 현을 능숙하게 회피합니다.
👋스스로에게 질문 컨테이너화된 상태에서도 작동?
여러 프록시가 동일한 서비스 인스턴스 집합으로 트래픽을 로드 밸런싱하는 컨테이너화된 환경에서도 작동됨
🗣️프록시
Ngnix와 글로벌 Redis 의 차이점은 무엇인가?
Ngnix로 글로벌 통신은 가능한것인가?
Ngnix 캐시응답 Nginx의 캐시는 HTTP 응답을 캐시하는 데 사용되지만
Redis 계산 비용이 높거나 반복적으로 요청되는 데이터를 캐시할 수 있습니다. 캐시응답
Redis의 캐시는 어떤 데이터든 캐시할 수 있습니다. 모든데이터를 사용할수있다 그대신 비용많이 든다.
+[백엔드서버] | +[응답캐시조절] | +[반복적으로 다운로드되는 데이터, JS/HTML/이미지 파일 등에 유용] |
RSA 설정
C:\asac_code\resume>openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Generating a 4096 bit RSA private key
...................................................................................................................................................................................++
.................................................................................................++
writing new private key to 'key.pem'
Enter PEM pass phrase:
3476:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:825:You must type in 4 to 511 characters
3476:error:0906406D:PEM routines:PEM_def_callback:problems getting password:pem_lib.c:116:
3476:error:0907E06F:PEM routines:DO_PK8PKEY:read key:pem_pk8.c:130:
C:\asac_code\resume>openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Generating a 4096 bit RSA private key
..................................++
...........................++
writing new private key to 'key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:KOREA
Locality Name (eg, city) []:seoul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:seol
Email Address []:oksky2957@daum.net
댓글