역방향 프록시와 백엔드 서버간에 SSL 연결을 활성 상태로 유지

Aug 19 2020

대부분의 사용자와 너무 멀리 떨어져있는 백엔드 서버 (Apache)가 있으므로 우리의 아이디어는 캐시 역할을 할 더 가까운 역방향 프록시를 구현하는 것입니다.

언뜻 보면 매력으로 작용했다. 캐시 된 정적 파일은 매우 빠르게 제공되지만 그 밖의 경우에는 역방향 프록시 (NGINX)가 백엔드 서버에 연결해야하므로 SSL 핸드 셰이 킹에 시간이 걸리므로 이러한 첫 번째 요청이 느려집니다.

이에 대한 정보를 찾고 있었지만이 연결을 유지하는 방법을 찾을 수 없었습니다. 그것을 할 방법이 있습니까?

나는 웹 소켓에 대해 더 많이 배우려고 노력했지만, 내가 찾을 수있는 모든 구현은 두 웹 서버 (역방향 프록시의 NGINX와 백엔드의 Apache)를 중개하는 연결을 유지하는 것이 아니라 특정 요청에 응답하는 것이 었습니다.

이를 달성하기 위해 무엇을 공부 / 사용 / 검색해야할지에 대한 아이디어 나 팁이 있습니까?

미리 감사드립니다!

답변

MichaelHampton Aug 19 2020 at 07:54

nginx에서는 keepalive연결이 upstream블록에 정의 된 경우 에만 업스트림 연결을 지정할 수 있습니다 . 예를 들면 :

upstream backend {
    server private-api.example.com:443;

    keepalive 32;
}

여기에서 작업자 프로세스keepalive 당 업스트림 서버에 대한 동시 열린 연결의 최대 수를 지정합니다 .

업스트림을 사용하려면 proxy_pass백엔드 주소 대신 이름을 지정 합니다.

예를 들어, 이전에 다음을 사용한 경우 :

     proxy_pass https://private-api.example.com:443;

다음과 같이 변경합니다.

     proxy_pass https://backend;

말 그대로 정의 된 server.

또한 HTTP 버전을 1.1로 설정하고 (불합리하게 기본값은 1.0이므로) Connection 헤더를 지워야합니다.

    proxy_http_version 1.1;
    proxy_set_header Connection "";

도 있음을 유의하십시오 keepalive_timeout당신이에서 정의 할 수있는 upstream튜닝 할 필요가있다. 기본적으로 60 초이므로 연결이 오랫동안 유휴 상태이면 keepalive열린 연결 수가 적어도 닫힙니다 . 백엔드 서버에는 별도로 조정해야하는 자체 연결 유지 시간 제한이 있습니다.