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

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

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

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

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

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

이를 달성하기 위해 무엇을 연구/사용/검색해야 ​​하는지에 대한 아이디어나 팁을 갖고 있는 사람이 있습니까?

미리 감사드립니다!

답변1

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이기 때문에) 연결 헤더를 지워야 합니다.

    proxy_http_version 1.1;
    proxy_set_header Connection "";

조정해야 할 수도 있는 를 keepalive_timeout정의할 수도 있다는 점을 명심하십시오 . upstream기본적으로 60초이므로 연결이 오랫동안 유휴 상태이면 열려 있는 연결 수가 이보다 적더라도 닫힙니다 keepalive. 백엔드 서버에는 별도로 조정해야 하는 자체 연결 유지 시간 제한이 있습니다.

관련 정보