nginx 역방향 에이전트 상용 모듈

5653 단어
역방향 대리 란 무엇 입 니까?
역방향 프 록 시 는 쉽게 말 하면 프 록 시 백 엔 드 서버 가 클 라 이언 트 요청 에 응 하 는 서버 입 니 다.역방향 프 록 시 는 7 층 응용 층 에서 일 하 는 부하 균형 서버 가 왜 역방향 프 록 시 를 필요 로 하 는 지 이해 할 수 있 습 니 다.1. 백 엔 드 호스트 숨 기기 2. 백 엔 드 각 호스트 의 경로 상황 을 잘 관리 합 니 다. 3. 백 엔 드 서버 자원 을 유연 하 게 분배 합 니 다. 4. 구체 적 인 서비스 에 따라 퍼 가기 합 니 다.
nginx 는 어떻게 역방향 대리 기능 을 실현 합 니까?
가장 간단 한 예:
location / {
            proxy_pass http://localhost:8000; #    location      http://localhost:80000  
            proxy_set_header Host $host; #            
            proxy_set_header X-Real-IP $remote_addr;
        }   

nginx 는 역방향 에이전트 로 자주 사용 되 는 모듈 입 니 다.
1.proxy_pass URL;
proxy_pass 는 nginx 가 역방향 에이전트 로 서 가장 중요 한 명령 예 입 니 다.
location /name/ {
        proxy_pass http://127.0.0.1/remote/;
        }

이 예 에서 사용자 의 방문 경로 가 www. baidu. com / name / 이면 실제 방문 경 로 는 reote / 디 렉 터 리 proxy 입 니 다.pass 는 location 에 있 는 URI 를 proxypass 뒤에 IP 만 있 습 니 다. 예 를 들 어 proxypass http://18.18.18.18이때 뒤의
nginx 에 proxy 설정pass 시 ^ ~ 일치 하 는 경로 라면 proxypass 후의 url 마지막 /, 추가 /, 절대 루트 에 해당 하 는 경우 nginx 는 location 에 일치 하 는 경로 부분 을 대리 하지 않 습 니 다./ 가 없 으 면 일치 하 는 경로 부분 도 대리 에 게 보 냅 니 다.
location ^~ /static_js/ 
{ 
proxy_cache js_cache; 
proxy_set_header Host js.test.com; 
proxy_pass http://js.test.com/; 
}

위의 설정 과 같이 요청 한 url 은?http://servername/static_js / test. html 가 대 리 됩 니 다.http://js.test.com/test.html
이렇게 설정 하면
location ^~ /static_js/ 
{ 
proxy_cache js_cache; 
proxy_set_header Host js.test.com; 
proxy_pass http://js.test.com; 
}

대리http://js.test.com/static_js / test. htm 는 location 후 정규 표현 식 모드 로 일치 합 니 다. if 구문 이나 limtexecept 시 proxy패스 뒤에 URI 를 넣 으 면 안 돼 요.
2.proxy_set_header field value;
프 록 시 서버 가 백 엔 드 서버 로 보 내 는 헤더 파일 을 수정 하 는 데 사 용 됩 니 다. 백 엔 드 서버 가 받 고 처리 하 는 요청 은 실제 프 록 시 서버 에서 보 내 온 것 이기 때문에 백 엔 드 호스트 는 클 라 이언 트 의 정 보 를 모 르 고 후기 로그 분석 을 할 때 실제 요청 소스 를 조회 할 수 없습니다. 실제 클 라 이언 트 소스 기록 은 프 록 시 서버 에서 처리 되 지만,그러나 프 록 시 서버 의 디스크 IO 프 록 시 서버 는 로 그 를 하지 않 기 때문에 이 매개 변 수 는 실제 클 라 이언 트 소스 IP 를 기본 소스 IP (프 록 시 IP) 로 교체 하여 백 엔 드 서버 로 보 내야 합 니 다.예:
location / {
            proxy_pass http://localhost:8000; #    location      http://localhost:80000  
            proxy_set_header Host $host; #            
            proxy_set_header X-Real-IP $remote_addr;
        }

X - Real - IP 는 로그 파일 의 format 에 로 그 를 추가 하면 사용자 정의 데 몬 입 니 다.생산 환경 에서 다단 계 에이전트 가 나타 날 때 $proxy 를 사용 해 야 합 니 다.add_x_forwarded_for, 이 매개 변 수 는 같은 이치 로 바 꾸 는 것 이 아니 라 뒤로 추가 하 는 것 입 니 다. 역방향 에이전트 도 클 라 이언 트 에 보 내 는 헤더 파일 을 수정 할 수 있 습 니 다. 진정한 백 엔 드 서버 IP 나 프 록 시 IP 를 클 라 이언 트 에 응답 하려 면 전문 적 인 헤더 모듈 ngx 를 사용 해 야 합 니 다.http_headers_모듈 모듈.addheader 는 프 록 시 서버 에서 클 라 이언 트 로 보 내 는 명령 을 수정 하 는 데 사 용 됩 니 다.예: add_header X-Via $server_addr;3. nginx 는 프 록 시 서버 의 캐 시 모듈 입 니 다.
캐 시 란 무엇 입 니까?
일반적으로 말 하 는 캐 시 는 데 이 터 를 메모리 에 임시로 저장 하 는 것 입 니 다. 데이터 나 프로그램 이 필요 할 때 메모리 에서 직접 읽 습 니 다. 메모리 의 읽 기와 쓰기 속도 가 디스크 IO 와 같은 급 이 아니 기 때문에 캐 시 를 사용 하면 시스템 의 사용 효율 을 크게 향상 시 킬 수 있 습 니 다.
캐 시가 왜 필요 합 니까?
nginx 가 프 록 시 서버 일 때 대량의 요청 과 응답 을 동시에 처리 합 니 다. 매번 디스크 IO 를 사용 해 야 한다 면 구조의 성능 에 큰 영향 을 줄 수 있 기 때문에 요청 빈도 가 높 은 데 이 터 를 캐 시 로 하고 프 록 시 서버 에 캐 시 합 니 다. 클 라 이언 트 가 요청 할 때 직접 응답 하고 백 엔 드 에 네트워크 나 디스크 IO 를 시작 하지 않 습 니 다.
nginx 는 어떻게 캐 시 를 구축 합 니까?
요청 에 따라 hash 계산 을 통 해 트 리 매듭 디 렉 터 리 를 만 들 고 hash 표를 만들어 메모리 에 저장 합 니 다. 사용자 의 요청 을 받 은 후에 hash 표를 찾 고 검색 결과 에 따라 데이터 가 있 는 디 렉 터 리 를 읽 고 해당 합 니 다.보통 GET, HEADproxy 만 캐 시 합 니 다.cache_path \ # http 아래 에 만 사용 할 수 있 습 니 다 \ # 예: proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=one:10m max_size=2g; # /data/nginx/cache, 3 , 16 , 10 , one, 2g proxycache_path 는 http 에서 만 정의 할 수 있 습 니 다. http 에서 proxy 를 정의 합 니 다.cache_path 후, server 나 location 에서 몇 개의 인 자 를 정의 해 야 합 니 다.
1.prox_cache_key
캐 시 키 와 공간 크기 를 정의 하 는 것 은 캐 시 이름 과 사용 공간 크기 를 정의 하 는 것 으로 도 이해 할 수 있 습 니 다. proxy_cache_key NAME;2.proxy_cache_methods
클 라 이언 트 가 요청 한 내용 을 캐 시 합 니 다. 기본 값 은 GET HEAD 예 입 니 다. proxy_cache_methods GET HEAD POST;3.prox_cache_min_uses
예: proxy_cache_min_uses 2; 캐 시의 최소 사용 횟수 를 정의 합 니 다. 즉, 클 라 이언 트 가 특정한 자원 을 요청 할 때 설정 횟수 에 도달 해 야 캐 시 됩 니 다.
4.prox_cache_valid
서로 다른 캐 시 에 대해 서로 다른 유효 시간 예 를 정의 합 니 다: proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;5.prox_cache_use_stale
정의 할 때 만 료 된 캐 시 를 사용 할 수 있 습 니 다. 이 만 료 는 백 엔 드 서버 가 자원 을 업데이트 한 후 캐 시 내용 이 더 이상 최신 이 아 닙 니 다.예: prox_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;4. 시간 초과 모듈
실제 환경 에 서 는 연결 이 비정상적 으로 끊 기 는 경우 가 많 기 때문에 응답 시간 이 초과 되 는 시간 을 정의 해 야 합 니 다.
1.prox_connect_timeout
프 록 시가 백 엔 드 서비스 에 연결 (TCP 세 번 악수) 하 는 시간 초과 시간 을 정의 합 니 다. 기본 값 은 60 초 이 고 최 장 75 초 입 니 다. proxyconnect_timeout 10;
2.proxy_read_timeout
프 록 시 와 백 엔 드 서비스 가 연결 되 는 것 을 정의 한 후 백 엔 드 에서 프 록 시 에 응답 하 는 시간 초과 시간 을 읽 습 니 다.
3.proxy_send_timeout
백 엔 드 에 요청 한 시간 초과
5. fastcgi 모듈
nginx 는 정적 콘 텐 츠 를 처리 하 는 도구 이기 때문에 사용자 가 동적 콘 텐 츠 로 요청 할 때 fastcgi 프로 토 콜 을 사용 하여 동적 콘 텐 츠 를 phop 에 맡 기 고 프 록 시 재 응답 클 라 이언 트 에 응답 해 야 합 니 다.fcgi 전송 처리 요청 능력 은 httpd 보다 못 하고 lnamp 구 조 를 자주 사용 합 니 다.사용자 가 정적 자원 을 요청 할 때 로 컬 에서 처리 하고 응답 합 니 다. 클 라 이언 트 가 동적 자원 을 요청 할 때 nginx 에서 프 록 시 로 백 엔 드 AP 서버 로 전송 하고 http 프로 토 콜 로 전송 하면 성능 을 향상 시 킬 수 있 습 니 다.요약: 1. 프 록 시 를 어떻게 실현 하 는 지, 맵 을 어떻게 실현 하 는 지 2. 캐 시 를 어떻게 구축 하여 가속 을 실현 하 는 지 3. 연결 시간 초과 정의
다음으로 전송:https://blog.51cto.com/13322786/2161346

좋은 웹페이지 즐겨찾기