저는 대부분의 사용자와 너무 멀리 떨어져 있는 백엔드 서버(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
. 백엔드 서버에는 별도로 조정해야 하는 자체 연결 유지 시간 제한이 있습니다.