nginx (3): 역방향 대리 편
무엇이 역방향 대리 입 니까?클 라 이언 트 요청 을 받 고 요청 을 백 엔 드 서버 에 맡 기 고 백 엔 드 서버 처리 가 완료 되면 응답 은 역방향 프 록 시 서버 를 통 해 클 라 이언 트 에 게 돌아 갑 니 다.역방향 프 록 시 는 랜 의 서버 가 네트워크 의 클 라 이언 트 에 의 해 접근 할 수 있 고 여러 대의 서버 간 에 부하 균형 을 이 룰 수 있다.모듈: ngxhttp_proxy_module
1.1 proxy_pass
역할 영역 상황: location, if in location, limitexcept
syntax:proxy_pass URL;
핵심 명령, 이 명령 은 프 록 시 서버 주소 로 설정 되 어 있 습 니 다. URL 은 호스트 이름, IP, IP 포트 등 형식 이 고 전송 프로 토 콜 http: / 또는 https: / / 주의해 야 할 경우 URL 에 uri 가 포함 되 어 있 거나 포함 되 어 있 지 않 습 니 다. nginx 는 처리 방식 이 다른 설정 예제 입 니 다. 상황 1: URL 에 uri 가 포함 되 어 있 지 않 습 니 다.
server {
...
server_name www.cutemsyu.com;
location /uri/ {
proxy_pass http://192.168.100.1:8080;
}
...
}
nginx , location uri
http://www.cutemsyu.com/uri --> http://192.168.100.1:8080/uri
상황 2: URL 에 uri 포함
server {
...
server_name www.cutemsyu.com;
location /uri/ {
proxy_pass http://192.168.100.1:8080/new_uri/;
}
...
}
nginx , location uri proxy_pass URL uri
http://www.cutemsyu.com/uri --> http://192.168.100.1:8080/new_uri
상황 3: location 에서 정의 한 uri 가 정규 방식 을 사용 하면 URL 에 uri 를 가 져 올 수 없습니다.
1.2 proxy_set_header field
역할 영역 컨 텍스트: http, server, location
syntax:proxy_set_header field value;
백 엔 드 서버 에 보 낼 요청 메시지 의 첫 번 째 값 을 설정 합 니 다. 이 명령 을 사용 하여 클 라 이언 트 IP 를 백 엔 드 서버 에 로그 형식 으로 기록 합 니 다. 구체 적 인 방법 은 다음 과 같 습 니 다.
proxy_set_header X-Real-IP $remote_addr
IP X-Real-IP
1.3 시간 초과 명령
역할 영역 컨 텍스트: http, server, location
역할 영역 컨 텍스트: http, server, location
syntax:proxy_ignore_client_abort on | off;
nginx 와 백 엔 드 서버 의 연결 이 중단 되 었 는 지 정의 합 니 다. 클 라 이언 트 가 응답 결 과 를 기다 리 지 않 으 면 연결 을 중단 합 니 다.이 명령 의 기본 값 은 off 입 니 다. 클 라 이언 트 가 연결 을 중단 하면 nginx 와 백 엔 드 연결 이 중단 되 고 nginx 는 5XX 의 오 류 를 기록 합 니 다. 일반적으로 이러한 오 류 는 조사 하기 어렵 습 니 다. 이 값 이 on 으로 설정 되 었 을 때 nginx 는 백 엔 드 서버 와 의 연결 을 미리 중단 하지 않 고 돌아 오 는 상태 코드 는 200 등 nginx 로그 에 도 이상 한 5XX 오류 가 발생 하지 않 습 니 다.
2. nginx 서버 그룹의 설정
모듈 ngxhttp_upstream_module 이 모듈 정 의 는 proxypass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass 등 명령 이 인 용 된 서버nginx 는 역방향 프 록 시 서버 로 서 부하 균형 을 이 루 기 위해 항상 서버 를 설정 해 야 합 니 다.서버 를 정의 할 때 기본 스케줄 링 알고리즘 은 폴 링 알고리즘 입 니 다. nginx 는 받 은 요청 폴 링 을 각 백 엔 드 서버 에 보 내 처리 하고 서버 성능 에 따라 가중치 를 증가 하거나 다른 스케줄 링 알고리즘 을 사용 할 수 있 습 니 다.
2.1 upstream 설정 블록
우선 http 설정 블록 에 새 설정 컨 텍스트 upstream 을 만 들 고 이름 을 짓 습 니 다.
http{
...
upstream group_name {
...
...
}
...
}
다음은 upstream 에서 사용 할 수 있 는 명령 을 소개 합 니 다.
2.2 서버 명령
syntax:server address [parameters...];
server 명령 은 핵심 명령 입 니 다. 그룹 구성원 address 는 형식 을 표시 할 수 있 습 니 다.
parameters 는 다음 과 같이 사용 할 수 있 습 니 다:
2.3 몇 개의 스케줄 링 알고리즘
기본 폴 링 알고리즘 을 제외 하고 다음 과 같은 알고리즘 을 사용 할 수 있 습 니 다. 사용 방법 은 간단 합 니 다. upstream 에 직접 추가 합 니 다.
consistent 인 자 를 선택 할 수 있 습 니 다. 일치 성 hash 알고리즘 을 말 합 니 다. 이 인 자 를 사용 하면 서버 가 server 를 사용 할 때 hash 대응 표 에 큰 변동 이 발생 하고 영향 범 위 를 줄 일 수 있 습 니 다.예시:
hash $request_uri consistent; #hash uri , hash
2.4 서버 그룹 이 남 은 연결 수 유지
syntax:keepalive connections;
이 명령 은 모든 워 커 프로 세 스 를 서버 그룹 으로 유지 하 는 남 은 연결 수량 상한 선 을 설정 합 니 다.connections 는 설정 한 수량 입 니 다. 이 수량 은 너무 많 으 면 안 됩 니 다. 새로운 네트워크 연결 을 방지 하기 위해 이 명령 을 사용 하 는 것 이 귀 찮 습 니 다. 홈 페이지 의 예 를 참고 하면 다음 과 같 습 니 다.
#http , 1.1, Connection
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
#FastCGI , fastcgi_keep_conn on
upstream fastcgi_backend {
server 127.0.0.1:9000;
keepalive 8;
}
server {
...
location /fastcgi/ {
fastcgi_pass fastcgi_backend;
fastcgi_keep_conn on;
...
}
}
3. nginx 에이전트 버퍼
proxy buffer 를 사용 하면 nginx 는 백 엔 드 서버 가 돌아 온 데 이 터 를 클 라 이언 트 에 비동기 로 전달 합 니 다.nginx 는 우선 백 엔 드 서버 로부터 응답 데 이 터 를 받 아 버퍼 에 저장 하고, 수신 데이터 가 버퍼 크기 를 초과 하면 로 컬 정의 임시 파일 에 저장 합 니 다.데이터 가 수신 되 거나 버퍼 에 데 이 터 를 가득 채 우 면 클 라 이언 트 에 데 이 터 를 보 냅 니 다.모든 buffer 가 데 이 터 를 가득 채 운 후에 클 라 이언 트 에 데 이 터 를 보 낼 때 까지 buffer 는 busy 상태 에 있 고 그 동안 다른 작업 을 하 는 데 실패 합 니 다.다음 명령 역할 영역 내용: http, server, location
3.1 proxy_buffering
syntax: proxy_buffering on | off;
프 록 시 버퍼 제어 명령, 기본 오픈
3.2 proxy_buffers
syntax: proxy_buffers number size;
이 명령 은 백 엔 드 서버 와 연 결 된 buffer 수 를 설정 합 니 다. 각각 buffer 크기 입 니 다.보통 size 는 메모리 페이지 크기 입 니 다.백 엔 드 서버 데이터 버퍼 의 총 크기 는 number * size 입 니 다.
3.3 proxy_busy_buffers_size
syntax: proxy_busy_buffers_size size;
이 명령 은 busy 상태 에 있 는 buffer 의 총 크기 를 설정 합 니 다.기본 값 proxybuffers 에서 정의 하 는 size 의 두 배 입 니 다.
3.4 proxy_temp_path
syntax: proxy_temp_path path [level1 [level2 [level3]]];
이 명령 은 백 엔 드 서버 가 부피 가 큰 데 이 터 를 응답 하 는 임시 파일 의 저장 경 로 를 설정 합 니 다 Example:
proxy_temp_path /spool/nginx/proxy_temp 1 2;
3.5 proxy_max_temp_file_size
syntax: proxy_max_temp_file_size size;
이 명령 은 임시 파일 이 공간 을 차지 하 는 총 크기 를 설정 합 니 다.
4. nginx 프 록 시 캐 시
nginx 는 전문 적 인 캐 시 서버 가 아니 라 varnish 등 서비스 가 더욱 효율 적 이지 만 nginx 의 캐 시 기능 은 일부 장면 에서 도 좋 은 효 과 를 발휘 할 수 있 습 니 다.이전 소절 에서 우 리 는 nginx 버퍼 에 대해 말 했 습 니 다. 버퍼 는 서로 다른 전송 효율 을 가 진 장치 간 의 전송 을 조율 하고 효율 이 높 은 측의 대기 시간 을 낮 추기 위해 서 입 니 다.이 섹 션 의 캐 시 는 응답 클 라 이언 트 의 속 도 를 높이 기 위해 자주 방문 하 는 데 이 터 를 로 컬 에 캐 시 합 니 다. 클 라 이언 트 가 같은 자원 에 접근 할 때 로 컬 에 저 장 된 내용 을 클 라 이언 트 에 직접 응답 하여 백 엔 드 서버 에 대한 압력 을 줄 이 고 응답 속 도 를 높 입 니 다.동시에 nginx 의 버퍼 기능 은 nginx 버퍼 에 의존 합 니 다.
4.1 proxy_cache
syntax: proxy_cache zone|off;
이 명령 은 공용 캐 시 영역 이름 을 설정 하거나 캐 시 기능 을 닫 습 니 다.캐 시 영역 에 캐 시 된 색인 데 이 터 를 저장 합 니 다.
4.2 proxy_cache_key
syntax: proxy_cache_key string;
색인 을 만 드 는 데 사용 할 "키" 의 기본 값 을 proxy 로 정의 합 니 다.cache_key $scheme$proxy_host$request_uri;
4.3 proxy_cache_path
특히 이 명령 의 역할 영역 을 지적 합 니 다. Context: http
syntax:proxy_cache_path path [levels=levels] keys_zone=name:size;
이 명령 은 캐 시 데이터 의 저장 경로 와 캐 시 색인 에 관 한 내용 을 정의 합 니 다.명령 이 복잡 합 니 다. 위의 용법 은 축소판 입 니 다. 설정 해 야 할 인 자 를 유지 하고 다른 기본 값 을 유지 하면 됩 니 다.매개 변수 의미:
syntax: proxy_cache_min_uses number;
이 명령 은 자원 이 최소 몇 번 방문 되 는 지 캐 시 를 정의 합 니 다. 기본 값 은 1 입 니 다.
4.5 proxy_cache_use_stale
syntax:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ...;
이 명령 은 nginx 가 백 엔 드 서버 에 접근 하 는 과정 에서 접근 할 수 없 거나 접근 오류 등 이 발생 하면 어떤 상태 에서 nginx 가 캐 시 데 이 터 를 사용 하여 이번 클 라 이언 트 요청 에 응답 할 수 있 는 지 정의 합 니 다.캐 시 된 데이터 가 만 료 되 었 을 수도 있 지만 사이트 의 가용성 에 있어 서 는 의미 가 크다.기본 값 은 off 입 니 다.
4.6 proxy_cache_valid
syntax:proxy_cache_valid [code...] time;
이 명령 은 http 응답 상태 에 따라 캐 시 시간 을 설정 합 니 다.
4.7 proxy_no_cache
syntax:proxy_no_cache sting;
이 명령 은 응답 데 이 터 를 캐 시 하지 않 는 상황 을 정의 합 니 다.string 에서 정 의 된 값 은 여러 개 일 수 있 습 니 다. 값 이 비어 있 거나 0 이 아 닐 때 데 이 터 를 캐 시 하지 않 습 니 다.string 값 은 보통 http 프로 토 콜 의 캐 시 제어 클래스 의 첫 번 째 부분 입 니 다.
4.8 하나의 설정 사례
http {
...
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=ncache:256m ;
...
}
location / {
...
proxy_cache ncache;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;
proxy_no_cache $cookie_nocache;
...
}
5. nginx 의 fastcgi 모듈
nginx 는 에이전트 fastcgi 프로 토 콜 의 요청 을 되 돌 릴 수 있 습 니 다. 이 절 은 하나의 예 를 통 해 구체 적 으로 사용 할 수 있 습 니 다.
location ~ *. php ${\ # 우선 php 동적 요청 과 일치 합 니 다.
fastcgi_pass 127.0.0.1:9000; #
fastcgi_index index.php; #
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; # php fastcgi
include fastcgi_params; # nginx
}
6. 종결 어
지금까지 nginx 세 편의 글 이 끝 났 습 니 다. 여러분 의 소장 관심 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 로 django 사 이 트 를 배치 하 는 중 오류 가 발생 했 습 니 다.nginx 로 django 사 이 트 를 배치 하 는 중 오류 가 발생 했 습 니 다. 사이트 에서 flup 으로 대 리 를 합 니 다. nginx 설정 부분 은 다음 과 같 습 니 다. django 에 게 는 PA...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.