Nginx 기본 기능 - Nginx 를 리 버스 프 록 시 로 설정

6139 단어 Nginx
주소
역방향 프 록 시 서버 는 보통 부하 균형 에 사용 된다.
프 록 시 서버 로 설정 하면 Nginx 는 서로 다른 프로 토 콜 의 요청 을 다른 서버 에 전송 하여 처리 할 수 있 으 며, 전송 요청 시 클 라 이언 트 요청 헤 더 를 수정 할 수 있 으 며, 요청 한 서버 응답 을 처리 하 는 캐 시 를 설정 할 수 있 습 니 다.
1. 개술
프 록 시 는 보통 여러 서버 사이 에 부 하 를 분배 하고 서로 다른 사이트 에서 온 내용 을 빈 틈 없 이 표시 하거나 프로 토 콜 에 따라 처리 요청 을 서로 다른 응용 프로그램 서버 에 전달 하 는 데 사용 된다.
2. 프 록 시 서버 에 요청 전달
Nginx 프 록 시 요청 시 지정 한 프 록 시 서버 에 요청 을 보 내 고 응답 을 받 아 클 라 이언 트 에 보 냅 니 다.지정 한 프로 토 콜 에 따라 프 록 시 요청 을 HTTP 서버 (다른 Nginx 서버 또는 비 Nginx 서버) 나 비 HTTP 서버 (PHP 또는 Python 응용 프로그램 을 실행 할 수 있 음) 에 보 낼 수 있 습 니 다.Nginx 가 지원 하 는 프로 토 콜 은 FastCGI, uwsgi, SCGI, memcached 를 포함한다.
2.1 HTTP 프 록 시 서버 에 요청 보 내기
2.1.1 proxy_pass 명령 어proxy_pass 명령 은 HTTP 프 록 시 서버 에 요청 을 보 낼 수 있 습 니 다. proxy_pass 명령 은 location 블록 에 있 습 니 다.
location /some/path/ {
    proxy_pass http://www.example.com/link/;
}

다음 설정 은 이 location 에 보 내 는 모든 요청 을 proxy_pass 지정 한 주소 의 프 록 시 서버 로 보 냅 니 다. 주 소 는 도 메 인 이름 이나 IP 주소 일 수 있 고 포트 번 호 를 포함 할 수 있 습 니 다.
location ~ \.php {
    proxy_pass http://127.0.0.1:8000;
}

2.1.2 URI 교체
프 록 시 주소 에 URI 가 포함 되 어 있 으 면 다음 예 에서 / link / 와 같이 요청 한 URI 부분 은 일치 하 는 location 인자 로 대 체 됩 니 다.예 를 들 어 요청 에 URI: / some / path / page. html 가 있 으 면 이 주소 로 전 송 됩 니 다.http://www.example.com/link/page.html。 프 록 시 주소 에 URI 가 포함 되 어 있 지 않 거나 바 꿀 URI 부분 을 판단 할 수 없 으 면 완전한 요청 URI 를 전달 합 니 다 (수 정 될 수 있 습 니 다).
2.2 HTTP 프 록 시 서버 가 아 닌 서버 로 요청 보 내기**_pass 명령 은 비 HTTP 프 록 시 서버 로 요청 을 보 낼 수 있 습 니 다.
  • fastcgi_pass: FastCGI 서버 에 요청 보 내기
  • uwsgi_pass: uwsgi 서버 에 요청
  • scgi_pass: SCGI 서버 에 요청 보 내기
  • memcached_pass: memcached 서버 에 요청 보 내기
  • 위의 몇 가지 명령 중 주 소 를 지정 하 는 규칙 이 다 릅 니 다.어떤 서버 는 파 라 메 터 를 추가 해 야 합 니 다.
    proxy_pass 명령 도 지정 한 서버 를 가리 킬 수 있 습 니 다.이 경우 지정 한 방법 에 따라 그룹 내 서버 간 에 요청 을 할당 합 니 다.
    3. 전달 요청 헤더
    Nginx 는 기본적으로 프 록 시 요청 에서 두 개의 머리 필드 를 다시 정의 합 니 다: Host 와 Connection, 그리고 요청 헤더 의 중간 값 이 비어 있 는 필드 를 삭제 합 니 다.Host 필드 는 $proxy_host 변수 로 설정 되 었 고, Connection 필드 는 close 로 설정 되 었 습 니 다.proxy_set_header 명령 은 이 설정 을 바 꿀 수도 있 고 다른 머리 필드 를 정기 적 으로 바 꿀 수도 있다.proxy_set_header 명령 은 location 블록 이나 더 높 은 등급 의 블록 에서 사용 할 수 있 고 server 컨 텍스트 나 http 블록 에서 도 사용 할 수 있 습 니 다.
    location /some/path/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://localhost:8000;
    }

    위의 설정 에서 Host 필드 를 $host 변수 로 설정 합 니 다.
    머리 필드 를 빈 문자열 로 설정 하면 프 록 시 서버 에 전달 되 는 것 을 방지 할 수 있 습 니 다.
    location /some/path/ {
        proxy_set_header Accept-Encoding "";
        proxy_pass http://localhost:8000;
    }

    4. 버퍼 설정
    Nginx 기본 값 으로 프 록 시 서버 의 응답 을 캐 시 합 니 다.응답 은 수신 이 끝 날 때 까지 내부 버퍼 에 저 장 됩 니 다.버퍼 는 느 린 클 라 이언 트 의 성능 을 최적화 하 는 데 도움 이 되 며, 응답 이 Nginx 에서 클 라 이언 트 로 동기 화 되면 프 록 시 서버 의 시간 을 낭비 할 수 있 습 니 다.그러나 버퍼 를 사용 할 때 Nginx 는 프 록 시 서버 가 응답 을 빠르게 처리 할 수 있 도록 합 니 다. 그러나 Nginx 는 응답 을 일정 시간 저장 합 니 다. 클 라 이언 트 는 이 시간 을 기 다 려 야 다운 로드 를 시작 할 수 있 습 니 다.proxy_buffering 명령 은 캐 시 를 할 수 있 거나 금지 할 수 있다.proxy_buffers 명령 은 캐 시 구역 의 크기 를 조절 하여 요청 한 캐 시 구역 의 개 수 를 할당 할 수 있 습 니 다.프 록 시 에서 응답 을 되 돌려 주 는 첫 번 째 부분 은 독립 된 버퍼 에 저 장 됩 니 다. 이 버퍼 의 크기 는 proxy_buffer_size 명령 에 의 해 설 정 됩 니 다.이 부분 은 보통 상대 적 으로 작은 응답 헤드 를 포함 하고 다른 응답 버퍼 보다 작 을 수 있 습 니 다.
    다음 예제 에서 버퍼 의 기본 수량 이 증가 하고 첫 번 째 부분 에 응답 하 는 버퍼 크기 는 기본 값 보다 작 습 니 다.
    location /some/path/ {
        proxy_buffers 16 4k;
        proxy_buffer_size 2k;
        proxy_pass http://localhost:8000;
    }

    버퍼 를 닫 으 면 프 록 시 서버 가 돌아 오 는 응답 은 Nginx 에서 클 라 이언 트 에 동기 화 되 어 응답 이 더욱 빠 릅 니 다.proxy_buffering 명령 을 통 해 지정 한 location 의 캐 시 기능 을 닫 을 수 있 습 니 다.
    location /some/path/ {
        proxy_buffering off;
        proxy_pass http://localhost:8000;
    }

    이 경우 Nginx 는 proxy_buffer_size 설 정 된 버퍼 만 사용 하여 응답 하 는 현재 부분 을 저장 합 니 다.
    5. 전송 IP 주소 선택 보 내기 IP 주소 선택
    프 록 시 서버 에 여러 개의 네트워크 카드 가 있다 면 프 록 시 에 연 결 된 서버 나 상류 에 지정 한 소스 IP 주 소 를 선택해 야 할 때 도 있 습 니 다.Nginx 뒤의 서버 가 특정 IP 나 IP 범위 에서 만 연결 할 수 있 도록 설정 되 었 을 때 유용 합 니 다.proxy_bind 명령 은 IP 주 소 를 선택 하 는 데 사 용 됩 니 다.
    location /app1/ {
        proxy_bind 127.0.0.1;
        proxy_pass http://example.com/app1/;
    }
    
    location /app2/ {
        proxy_bind 127.0.0.2;
        proxy_pass http://example.com/app2/;
    }

    IP 주소 도 변수 로 설정 할 수 있 습 니 다.예 를 들 어 $server_addr 변 수 는 요청 한 IP 주 소 를 proxy_bind 명령 에 전달 합 니 다.
    location /app3/ {
        proxy_bind $server_addr;
        proxy_pass http://example.com/app3/;
    }

    좋은 웹페이지 즐겨찾기