nginx 학습 총화 5 (nginx 역방향 대리)
Nginx 에이전트
Nginx 는 0.7.48 버 전부터 Squid 와 유사 한 캐 시 기능 을 지원 했다.Nginx 의 웹 캐 시 서 비 스 는 주로 proxycache 관련 명령 집합 과 fastcgicache 관련 명령 집합 은 전 자 는 프 록 시 를 반대 방향 으로 사용 할 때 백 엔 드 내 용 원 서버 를 캐 시 하고 후 자 는 FastCGI 의 동적 프로그램 을 캐 시 하 는 데 사 용 됩 니 다.양자 의 기능 은 기본적으로 같다.
Nginx 0.8.32 버 전, proxycache 와 fastcgicache 는 이미 비교적 완벽 하 며, 게다가 제3자 의 ngxcache_Purge 모듈 (지정 한 URL 의 캐 시 를 지 우 는 데 사용) 은 Squid 를 완전히 대체 할 수 있 습 니 다.
Nginx 는 Squid 가 가 진 웹 캐 시 가속 기능, 지 정 된 URL 캐 시 제거 기능 을 갖 추고 있 습 니 다.성능 에 있어 서 Nginx 는 다 핵 CPU 를 Squid 보다 많이 이용 합 니 다.또 역 프 록 시, 부하 균형, 건강 검진, 백 엔 드 서버 고장 이전, Rewrite 재 작성, 용이 성에 서도 Nginx 가 Squid 보다 훨씬 강하 다.이 때문에 Nginx 는 '부하 균형 서버' 와 '웹 캐 시 서버' 로 동시에 사용 할 수 있다.
다음 문 서 는 nginx 가 프 록 시 서버 를 어떻게 만 드 는 지 설명 하고 다른 서버 에 전송 을 요청 하 며 캐 시 를 하지 않 습 니 다.사용 버 전 은 nginx - 0.8.15 입 니 다. 설정 은 다음 과 같 습 니 다.
http
{
……..
client_max_body_size 300m ; //
client_body_buffer_size 128k;
// ,
proxy_connect_timeout 600;
// _
proxy_read_timeout 600;
// _ _
proxy_send_timeout 600;
proxy_buffer_size 16k; // , nginx
proxy_buffers 4 32k; // nginx buffer
proxy_busy_buffers_size 64k;
proxy_max_temp_file_size 64k;
// proxy
upstream clubsrv {
server 192.168.0.110:80 weight=5;
server 192.168.0.121:80 weight=5;
}
upstream mysrv {
server 192.168.0.32:80 weight=2;
server 127.0.0.1:8000 weight=8;
}
server {
listen 80;
server_name club.xywy.com;
charset gbk;
root /www;
access_log logs/aaa.log combined;
// , clubsrv
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
// 502、504 , upstream
proxy_pass http://clubsrv;
// upstream
proxy_redirect off;
proxy_set_header Host club.xywy.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
// nginx , 127.0.0.1, IP( , )
index index.htm index.html index.php;
}
// , mysrv , www.sum.com/message
server {
listen 80;
server_name www.sum.com;
location /message {
proxy_pass http://mysrv;
proxy_set_header Host $host;
// , mysrv
}
// /message www.sum.com/ ,
location / {
proxy_pass http://mysrv;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
아래 설정 은 위의 오류 가 되 돌아 오 는 효과 와 같 습 니 다. 쓰 지 않 아 도 됩 니 다.
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root html;
}
2. Nginx 부하 균형 명령
Nginx 는 소프트웨어 의 7 층 부하 균형 (lvs 는 소프트웨어 의 4 층 부하 균형의 대표) 에 속 하 며, 7 층 부하 균형 소프트웨어 로 는 L7SW (Layer 7 switching), HAProxy 등 이 있다.부하 균형 을 지원 하 는 모듈 은 Http Upstream 입 니 다.다음은 이 모듈 과 그 아래 의 몇 가지 명령 을 소개 한다.
HTTP Upstream 모듈
(1)ip_hash 명령 어
백 엔 드 의 여러 동적 응용 서버 에 부하 균형 을 맞 출 때 iphash 명령 은 클 라 이언 트 IP 의 요청 을 해시 알고리즘 을 통 해 같은 백 엔 드 서버 로 찾 습 니 다.이렇게 하면 한 ip 사용자 가 Sever A 에 로그 인 한 후에 이 사이트 의 다른 URL 을 방문 할 때 방문 이 Server A 에 있 음 을 보증 할 수 있 습 니 다.하면, 만약, 만약...hash, 서버 A 에 가입 하고 이 사이트 의 다른 URL 을 방문 하면 백 엔 드 의 Sever B, C 로 넘 어 갈 수 있 습 니 다......................................................................
주의: 그러나 이러한 접근 은 백 엔 드 서버 의 부하 균형 을 보장 할 수 없습니다. 백 엔 드 에 일부 server 가 받 은 요청 이 많 을 수 있 습 니 다. 일부 server 는 받 아들 인 것 이 적 고 설정 한 가중치 가 작용 하지 않 을 수 있 습 니 다.
백 엔 드 의 동적 응용 프로그램 서버 가 nginx 에 ip 를 설정 하지 않 고 session 공 유 를 할 수 있다 면 권장 합 니 다.hash 방식.
upstream mysrv {
ip_hash;
server 192.168.0.110:80 weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 weight=8;
}
(2) server 명령
이 명령 어 는 백 엔 드 서버 의 이름과 인 자 를 지정 합 니 다.서버 이름 은 도 메 인 이름, ip, 포트 번호 또는 UNIX Socket 일 수 있 습 니 다.
매개 변수 소개:
weight = number: 서버 가중치 설정, 가중치 가 높 을 수록 클 라 이언 트 요청 수가 많 습 니 다.기본 값 1;
max_fails = numbser: failtimeout 이 지정 한 시간 내 에 백 엔 드 서버 에 요청 하 는 데 실패 한 횟수 입 니 다. 백 엔 드 서버 가 연결 되 지 않 거나 오류 가 발생 한 경우 (404 제외) 실패 로 표 시 됩 니 다.설정 이 없 으 면 기본 값 은 1 입 니 다.0 으로 설정 하면 이 검 사 를 닫 습 니 다.
fail_timeout = time: 매개 변수 maxfails 설정 실패 횟수 후 일시 정지 시간 입 니 다.
다운: 서버 가 영구적 으로 오프라인 상태 임 을 표시 합 니 다.
Backup: 백업 서버 가 모두 다운 되 거나 바 쁠 때 만 사용 합 니 다.
설정 은 다음 과 같 습 니 다:
upstream mysrv {
ip_hash;
server www.xywy.com weight=2;
server 127.0.0.1:8000 down;
server 192.168.0.212:80 max_fails=3 fail_timeout=30s;
server unix:/tmp/bakend3;
}
본문 은 '공 부 는 영원 해 야 한다' 는 블 로그 에서 나 온 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.