역방향 프록시와 로드 밸런싱이란 - 역방향 프록시란
우리는 때때로 우리 컴퓨터 A를 사용하여 외국 웹 사이트 B에 접속하지만 현재 접속할 수 없는 경우가 있습니다. 외국 웹사이트 B에 접근할 수 있는 중간 서버 C를 사용하면 우리 자신의 컴퓨터를 사용하여 서버 C에 접근할 수 있고, C를 사용하여 웹사이트 B에 접근할 수 있습니다. 그러면 이때 서버 C를 프록시 서버라고 하며, 이 접속 방식을 순방향 프록시라고 합니다. 순방향 프록시의 한 가지 특징은 우리가 방문하려는 웹사이트를 정확히 알고 있다는 것입니다. 또 다른 예로, 서버 클러스터가 있고 서버 클러스터에 있는 각 서버의 내용이 동일한 경우 개인용 컴퓨터에서 직접 서버 클러스터에 있는 서버에 액세스할 수 없으며 이때 타사 서버는 Cluster에 액세스하는 경우, 이때 타사 서버를 통해 서버 클러스터의 콘텐츠에 액세스하지만 이때는 어떤 서버가 콘텐츠를 제공하는지 알 수 없습니다. 이때 프록시 방식을 역방향 프록시라고 합니다.
서버의 단위 시간당 방문 횟수가 늘어나면 서버에 가해지는 부담도 커집니다. 서버에 가해지는 압력이 용량을 초과하면 서버가 충돌합니다. 서버 충돌을 방지하고 사용자에게 더 나은 경험을 제공하기 위해 일반적으로 로드 밸런싱을 사용하여 서버에 대한 부담을 공유합니다. 그렇다면 로드 밸런싱이란 무엇일까요? 맞습니다, 우리는 아주 많은 서버를 구축하여 서버 클러스터를 형성할 수 있습니다. 그런 다음 사용자가 우리 웹 사이트를 방문하면 먼저 중간 서버에 액세스한 다음 중간 서버가 서버 클러스터에서 부담이 적은 서버를 선택하도록 할 수 있습니다. 을 선택한 다음 선택한 서버에 액세스 요청을 소개합니다. 이러한 방식으로 모든 사용자 액세스는 서버 클러스터에 있는 각 서버의 압력이 균형을 이루고 서버 압력을 공유하고 서버 충돌을 방지하도록 보장합니다.
Nginx 로드 밸런싱 구현
Nginx는 Nginx 서비스를 사용하여 로드 밸런싱을 수행할 때 사용자의 로드 밸런싱을 수행할 수 있는 서버입니다. access는 먼저 Nginx 서버에 액세스한 다음 Nginx 서버가 서버 클러스터 테이블에서 압력이 덜한 서버를 선택한 다음 해당 서버에 액세스 요청을 보냅니다. 서버 클러스터의 서버가 충돌하면 해당 서버는 후보 서버 목록에서 삭제됩니다. 즉, 서버가 충돌하면 Nginx는 서버에 대한 액세스 요청을 절대 도입하지 않습니다.
HTTP Upstream 모듈
Upstream 모듈은 Nginx 서버의 중요한 모듈입니다. 업스트림 모듈은 폴링과 클라이언트 IP 간의 백엔드 로드 밸런싱을 구현합니다. 일반적으로 사용되는 명령어에는 ip_hash 명령어, 서버 명령어 및 업스트림 명령어가 포함됩니다.
로드 밸런싱 시스템에서는 사용자가 특정 서버에 로그인한 후 두 번째 요청을 하면 로드 밸런싱 시스템이므로 각 요청이 반복됩니다. 서버 클러스터에서 서버를 찾는다면, 이때 서버 A에 로그인한 사용자를 다른 서버로 찾는 것은 분명히 부적절합니다. 따라서 ip_hash 명령을 사용하여 이 문제를 해결할 수 있습니다. 클라이언트 요청이 이미 서버 A를 방문하여 로그인한 경우 두 번째 요청은 해시 알고리즘을 통해 자동으로 백엔드 서버에 대한 요청을 찾습니다. 아래에서는 예시를 통해 설명하겠습니다.
server 지시문은 주로 서버의 이름과 매개변수를 지정하는 데 사용됩니다. 아래에서는 예시를 통해 설명하겠습니다.
upstream 명령은 주로 Proxy_pass 및 fastcgi_pass 명령에서 사용할 수 있는 프록시 서버 그룹을 설정하는 데 사용됩니다. 기본 로드 밸런싱 방법은 폴링입니다.
ip_hash 명령
위 내용은 관련 내용을 포함하여 Nginx의 역방향 프록시 및 로드 밸런싱을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.