최근 nginx 소스 코드를 공부할 계획이었는데, nginx를 리버스 프록시 서버로 사용하여 로드 밸런싱을 완료할 수 있다는 온라인 소개를 봤습니다. 그래서 역방향 프록시 서버에 대한 몇 가지 정보를 수집하고 컴파일했습니다.
역방향 프록시 방식은 프록시 서버를 사용하여 인터넷에서 연결 요청을 수락한 다음 해당 요청을 내부 네트워크의 서버로 전달하고 서버에서 얻은 결과를 인터넷 요청으로 반환하는 것을 말합니다. 클라이언트, 이때 프록시 서버는 외부 세계에 서버로 나타납니다.
일반적인 프록시 서버는 내부 네트워크에서 인터넷으로의 연결 요청을 프록시하는 데에만 사용됩니다. 클라이언트는 프록시 서버를 지정하고 웹 서버로 직접 보낼 http 요청을 프록시 서버로 보내야 합니다. 프록시 서버가 외부 네트워크의 호스트를 프록시하여 내부 네트워크에 액세스할 수 있는 경우 이 프록시 서비스를 역방향 프록시 서비스라고 합니다.
역방향 프록시 서버를 구현하는 데는 일반적으로 두 가지 모델이 있습니다. 이는 콘텐츠 서버의 대체 장치로 사용되거나 콘텐츠 서버 클러스터의 로드 밸런서로 사용될 수 있습니다.替콘텐츠 서버 대체 콘텐츠 서버에 신용카드 번호 데이터베이스와 같이 안전하게 보관해야 하는 민감한 정보가 있는 경우 방화벽 외부에 프록시 서버를 설정하여 콘텐츠 서버를 대체할 수 있습니다. 외부 클라이언트가 콘텐츠 서버에 액세스하려고 하면 프록시 서버로 전송됩니다. 실제 콘텐츠는 콘텐츠 서버에 상주하며 방화벽 내부에서 안전하게 보호됩니다. 프록시 서버는 방화벽 외부에 위치하며 클라이언트에게 콘텐츠 서버로 나타납니다.
클라이언트가 사이트에 요청하면 해당 요청은 프록시 서버로 이동합니다. 그런 다음 프록시 서버는 방화벽의 특정 경로를 통해 클라이언트의 요청을 콘텐츠 서버로 보냅니다. 그런 다음 콘텐츠 서버는 이 채널을 통해 결과를 다시 프록시 서버로 보냅니다. 프록시 서버는 마치 프록시 서버가 실제 콘텐츠 서버인 것처럼 검색된 정보를 클라이언트에 보냅니다. 콘텐츠 서버가 오류 메시지를 반환하는 경우 프록시 서버는 메시지를 가로채서 클라이언트에 메시지를 보내기 전에 헤더에 나열된 모든 URL을 변경합니다. 이렇게 하면 외부 클라이언트가 내부 콘텐츠 서버에 대한 리디렉션 URL을 얻지 못하게 됩니다. 이런 방식으로 프록시 서버는 안전한 데이터베이스와 악의적인 공격 가능성 사이에 또 다른 장벽을 제공합니다. 행운의 공격이 성공하더라도 가해자는 전체 데이터베이스에 액세스할 수 있는 것에 비해 기껏해야 단일 트랜잭션과 관련된 정보에 액세스하는 것으로 제한됩니다. 방화벽 경로는 프록시 서버에 대한 접근만 허용하므로 인증되지 않은 사용자는 실제 콘텐츠 서버에 접근할 수 없습니다.
콘텐츠 서버용 로드 밸런서조직 내에서 여러 프록시 서버를 사용하여 웹 서버 간의 네트워크 로드 균형을 조정할 수 있습니다. 이 모델에서는 프록시 서버의 캐싱 기능을 활용하여 부하 분산을 위한 서버 풀을 생성할 수 있습니다. 이 시점에서 프록시 서버는 방화벽의 양쪽에 있을 수 있습니다. 웹 서버가 매일 많은 양의 요청을 받는 경우 프록시 서버를 사용하여 웹 서버의 부하를 공유하고 네트워크 액세스 효율성을 향상시킬 수 있습니다.
프록시 서버는 실제 서버에 대한 클라이언트 요청을 중개하는 역할을 합니다. 프록시 서버는 요청된 문서를 캐시합니다. 프록시 서버가 두 개 이상 있는 경우 DNS는 "라운드 로빈"을 사용하여 IP 주소를 선택하고 요청을 무작위로 라우팅할 수 있습니다. 클라이언트는 매번 동일한 URL을 사용하지만 요청이 수행되는 경로는 매번 다른 프록시 서버를 통과할 수 있습니다. 여러 프록시 서버를 사용하여 대용량 콘텐츠 서버에 대한 요청을 처리할 수 있습니다. 이 경우 콘텐츠 서버가 단독으로 작동할 때보다 더 높은 로드를 처리하고 더 효율적으로 작동할 수 있다는 이점이 있습니다. 초기 시작 중에 프록시 서버는 먼저 콘텐츠 서버에서 문서를 검색한 후 콘텐츠 서버에 대한 요청 수가 크게 줄어듭니다.
더 많은 Nginx 관련 기술 기사를 보려면
Nginx 사용법 튜토리얼칼럼을 방문하세요!
위 내용은 nginx에서 역방향 프록시를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!