프록시 서버와 역방향 프록시 서버의 차이점은 무엇입니까?
질문자 :Vicky
이전 답변은 정확했지만 너무 간결했습니다. 몇 가지 예를 추가하려고 합니다.
우선, "프록시"라는 단어는 다른 사람을 대신하여 행동하는 누군가 또는 무언가를 나타냅니다.
컴퓨터 영역에서 우리는 다른 컴퓨터를 대신하여 작동하는 한 서버에 대해 이야기하고 있습니다.
접근성을 위해 웹 프록시에 대한 논의를 제한하겠습니다. 그러나 프록시에 대한 아이디어는 웹사이트에만 국한되지 않습니다.
앞으로 프록시
웹 프록시에 대한 대부분의 논의는 "정방향 프록시"로 알려진 프록시 유형을 나타냅니다.
이 경우 프록시 이벤트는 "전달 프록시"가 원래 요청자를 대신하여 다른 웹 사이트에서 데이터를 검색하는 것입니다.
3대의 컴퓨터 이야기(1부)
예를 들어 인터넷에 연결된 세 대의 컴퓨터를 나열하겠습니다.
- X = 귀하의 컴퓨터 또는 인터넷상의 "클라이언트" 컴퓨터
- Y = 프록시 웹 사이트, proxy.example.org
- Z = 방문하려는 웹사이트, www.example.net
X --> Z.
에서 직접 연결합니다.
그러나 일부 시나리오에서는 X
대신 Y --> Z
X --> Y --> Z
와 같이 연결됩니다.
X가 정방향 프록시 서버를 사용하려는 이유:
다음은 정방향 프록시 서버의 (매우) 부분적인 사용 목록입니다.
1) X는 Z에 직접 액세스할 수 없습니다.
X
의 인터넷 연결에 대한 관리 권한을 가진 누군가가Z
사이트에 대한 모든 액세스를 차단하기로 결정했습니다.Z
의 관리자가X
를 차단했습니다.예:
Z의 관리자는 X에서 오는 해킹 시도를 알아차렸으므로 관리자는 X의 IP 주소(및/또는 netrange)를 차단하기로 결정했습니다.
Z는 포럼 웹사이트입니다.
X
가 포럼에 스팸을 보내고 있습니다. Z는 X를 차단합니다.
REVERSE 프록시
3대의 컴퓨터 이야기(파트 II)
이 예에서는 인터넷에 연결된 세 대의 컴퓨터를 나열합니다.
- X = 귀하의 컴퓨터 또는 인터넷상의 "클라이언트" 컴퓨터
- Y = 역방향 프록시 웹 사이트, proxy.example.com
- Z = 방문하려는 웹사이트, www.example.net
X --> Z.
에서 직접 연결합니다.
그러나 일부 시나리오에서는 Z
의 관리자가 직접 액세스를 제한하거나 허용하지 않고 방문자가 Y를 먼저 통과하도록 하는 것이 더 좋습니다. 따라서 이전과 같이 X
대신 Y --> Z
에 의해 검색되는 데이터가 있습니다. 이 데이터는 X --> Y --> Z
됩니다.
무엇에 비해 이번에는 다르다 "앞으로 프록시은"이 시간은 사용자 있다는 것입니다 X
자신이 액세스하고 모르는 Z
사용자 때문에, X
단지 그가와 통신 본다 Y
. 서버 Z
는 클라이언트에 표시되지 않으며 역방향 프록시 Y
만 외부에 표시됩니다. 역방향 프록시는 클라이언트 측에서 (프록시) 구성이 필요하지 않습니다.
클라이언트 X
Y
와만 통신한다고 생각하지만( X --> Y
), 실제로는 Y
모든 통신을 전달하는 것입니다( X --> Y --> Z
다시).
Z가 역방향 프록시 서버를 설정하려는 이유:
- 1) Z는 웹 사이트에 대한 모든 트래픽이 Y를 먼저 통과하도록 강제하려고 합니다.
- a) Z는 수백만 명의 사람들이 보고 싶어하는 대규모 웹 사이트를 보유하고 있지만 단일 웹 서버가 모든 트래픽을 처리할 수는 없습니다. 그래서 Z는 많은 서버를 설정하고 인터넷에 리버스 프록시를 설치하여 사용자가 Z를 방문하려고 할 때 가장 가까운 서버로 사용자를 보냅니다. 이것이 CDN(콘텐츠 배포 네트워크) 개념이 작동하는 방식의 일부입니다.
- 예:
- Apple 예고편 은 Akamai를 사용합니다.
- Jquery.com은 CloudFront CDN ( 샘플 )을 사용하여 JavaScript 파일을 호스팅합니다.
- 등.
- 예:
- a) Z는 수백만 명의 사람들이 보고 싶어하는 대규모 웹 사이트를 보유하고 있지만 단일 웹 서버가 모든 트래픽을 처리할 수는 없습니다. 그래서 Z는 많은 서버를 설정하고 인터넷에 리버스 프록시를 설치하여 사용자가 Z를 방문하려고 할 때 가장 가까운 서버로 사용자를 보냅니다. 이것이 CDN(콘텐츠 배포 네트워크) 개념이 작동하는 방식의 일부입니다.
- 2) Z의 관리자는 서버에서 호스팅되는 콘텐츠에 대한 보복이 걱정되며 메인 서버를 대중에게 직접 노출하는 것을 원하지 않습니다.
- a) "Canadian Pharmacy"와 같은 스팸 브랜드 소유자는 수천 대의 서버를 보유한 것으로 보이지만 실제로는 대부분의 웹사이트가 훨씬 적은 수의 서버에서 호스팅됩니다. 또한 스팸에 대한 남용 신고는 주 서버가 아닌 공용 서버만 종료합니다.
위의 시나리오에서 Z
Y
를 선택할 수 있습니다.
게시물의 주제 링크:
콘텐츠 전송 네트워크
- CDN 목록
포워드 프록시 소프트웨어(서버 측)
HTTP용 역방향 프록시 소프트웨어(서버 측)
- Apache mod_proxy (HTTP용 정방향 프록시로도 작동 가능)
- nginx (hulu.com, 스팸 사이트 등에서 사용)
- HAProxy
- 캐디 웹서버
- 빛httpd
- perlbal (라이브저널용으로 작성)
- 포트퓨전
- 파운드
- varnish 캐시 ( FreeBSD 커널 전문가가 작성 )
- 휴식
TCP용 리버스 프록시 소프트웨어(서버 측)
또한보십시오:
Community Wiki
한 쌍의 간단한 정의는 다음과 같습니다.
전달 프록시: 요청자(또는 서비스 소비자)를 대신하여 작업
Reverse Proxy: 서비스/컨텐츠 생산자를 대리합니다.
Krishna Bheemanakatte
아래 다이어그램이 매우 유용하다는 것을 알았습니다. 인터넷을 통해 클라이언트에서 서버 로의 정방향 대 역방향 프록시 설정 아키텍처를 보여줍니다. 이 이미지는 qyb2zm302의 답변 및 기타 답변을 더 잘 이해하는 데 도움이 됩니다.
Peter Silva의 F5 DevCentral 에서 이 비디오 를 볼 수도 있습니다.
사진 출처: Quora . 그러나 Martijn Pieters에 따르면 이 이미지는 Pulse Secure Community 또는 Julien Pauli의 사이트 (프랑스어)(developerpez.com)에서 가져온 것일 수 있습니다.
고전 속담이 생각났습니다.
사진은 1000단어의 가치가 있습니다.
Nishant
정방향 프록시 대 역방향 프록시 (2012)는 정방향 프록시와 역방향 프록시의 차이점을 매우 명확하게 설명합니다.
qyb2zm302의 답변 은 프록시 응용 프로그램에 대해 자세히 설명하고 있지만 순방향 프록시와 역방향 프록시 사이의 기본 개념을 놓치고 있습니다. 역 프록시인 X → Y → Z의 경우 X는 Y에 대해 알고 Z는 알지 못합니다. 그 반대의 경우도 마찬가지입니다.
프록시는 단순히 통신(요청 + 응답)을 위한 중개자입니다. 클라이언트 <-> 프록시 <-> 서버
- 클라이언트 프록시: ( 클라이언트 <-> 프록시 ) <-> 서버
프록시는 클라이언트를 대신하여 작동합니다. 클라이언트는 체인에 포함된 세 대의 기계에 대해 모두 알고 있습니다. 서버는 그렇지 않습니다.
- 서버 프록시: 클라이언트 <-> ( 프록시 <-> 서버 )
프록시는 서버를 대신하여 작동합니다. 클라이언트는 프록시에 대해서만 알고 있습니다. 서버는 전체 체인을 알고 있습니다.
정방향 및 역방향 은 클라이언트 및 서버 프록시에 대한 단순히 혼란스럽고 관점 종속적인 이름인 것 같습니다. 나는 명확한 의사 소통을 위해 전자를 포기할 것을 제안합니다.
물론 문제를 더욱 복잡하게 하기 위해 모든 시스템이 독점적으로 클라이언트나 서버인 것은 아닙니다. 컨텍스트에 모호성이 있는 경우 프록시가 있는 위치와 프록시가 터널링하는 통신을 명시적으로 지정하는 것이 가장 좋습니다.
Protongun
다음과 같은 다이어그램이 도움이 될 수 있습니다.
전달 프록시
역 프록시
Maria Ines Parnisari
차이점은 주로 배포에 있습니다. 웹 정방향 및 역방향 프록시는 모두 동일한 기본 기능을 가지고 있습니다. 다양한 형식의 HTTP 요청에 대한 요청을 수락하고 일반적으로 원본 또는 연락처 서버에 액세스하여 응답을 제공합니다.
완전한 기능을 갖춘 서버에는 일반적으로 액세스 제어, 캐싱 및 일부 링크 매핑 기능이 있습니다.
정방향 프록시는 클라이언트 시스템을 구성하여 액세스하는 프록시입니다. 클라이언트는 프록시 기능(리디렉션, 프록시 인증 등)에 대한 프로토콜 지원이 필요합니다. 프록시는 사용자 경험에 투명하지만 애플리케이션에는 투명하지 않습니다.
역방향 프록시는 웹 서버로 배포되고 웹 서버처럼 동작하는 프록시입니다. 단, 프로그램과 디스크에서 콘텐츠를 로컬로 구성하는 대신 원본 서버로 요청을 전달한다는 점만 다릅니다. 사용자 경험은 완전히 투명 있도록 클라이언트의 관점에서 그것은 웹 서버입니다.
실제로 단일 프록시 인스턴스는 서로 다른 클라이언트 모집단에 대해 정방향 및 역방향 프록시로 동시에 실행할 수 있습니다.
Community Wiki
프록시: 클라이언트를 대신하여 요청을 하고 있습니다. 따라서 서버는 프록시에 응답을 반환하고 프록시는 응답을 클라이언트에 전달합니다. 실제로 서버는 클라이언트가 누구인지(클라이언트의 IP 주소) "학습"하지 않습니다. 프록시만 알 수 있습니다. 그러나 클라이언트는 본질적으로 서버로 향하는 HTTP 요청의 형식을 지정하기 때문에 서버를 확실히 알고 있지만 프록시에 전달하기만 합니다.
역방향 프록시: 서버를 대신하여 요청을 수신하고 있습니다. 요청을 서버에 전달하고 응답을 받은 다음 클라이언트에 응답을 반환합니다. 이 경우 클라이언트는 실제 서버(서버의 IP 주소)가 누구인지 "학습"하지 않습니다(일부 예외 있음). 프록시만 알 수 있습니다. 서버는 역방향 프록시의 구성에 따라 실제 클라이언트를 알거나 알 수 없습니다.
Dimos
가장 좋은 설명은 여기 에 다이어그램과 함께 있습니다.
정방향 프록시 가 클라이언트( 또는 요청하는 호스트 ) 를 대신하여 프록시하는 동안 역방향 프록시 는 서버를 대신하여 프록시합니다.
실제로 정방향 프록시 는 클라이언트의 ID를 숨기는 반면 역방향 프록시 는 서버의 ID를 숨깁니다.
Farhan
프록시 서버는 인터넷을 통해 필요하지 않은 다양한 공용 리소스에 대한 나가는 네트워크 요청을 프록시(및 선택적으로 캐시)합니다. 역방향 프록시는 일반적으로 고가용성을 위해 인터넷에서 들어오는 요청을 캡처(및 선택적으로 캐시)하여 다양한 내부 개인 리소스에 배포합니다.
Ignacio Vazquez-Abrams
프록시(순방향 프록시):
LAN의 컴퓨터가 인터넷에 액세스하는 프록시 서버에 연결할 때. 이점에는 인터넷에 노출되는 서버만 포함됩니다. 외부에 있는 사람들은 컴퓨터에 직접 액세스할 수 없습니다. 정방향 프록시는 다운로드를 캐싱하여 사용자의 인터넷 액세스를 향상시킬 수 있습니다. 또한 특정 사이트에 대한 액세스를 제한하는 데 사용할 수도 있습니다. 또한 프록시 서버에만 연결하는 클라이언트가 아닌 공용 주소가 필요합니다.
리버스 프록시:
역방향 프록시는 정방향 프록시의 반대입니다. 대신 연결되는 서버를 대신하여 프록시 역할을 합니다. 원격 서버에 직접 액세스하는 대신 사용자는 역방향 프록시를 통해 거기에서 적절한 서버로 연결됩니다. 역방향 프록시에만 SSL 인증서가 필요하고 공용 IP 주소는 하나만 필요하며 들어오는 요청의 로드 밸런싱을 처리하여 전반적인 사용자 경험을 향상시킬 수 있습니다.
이미지 출처: 애플리케이션 요청 라우팅을 사용하여 정방향 프록시 생성
JSON C11
Nakamoto
Apache 관점에서 내가 이해하는 것은 프록시가 사이트 x가 사이트 y를 프록시하는 경우 x에 대한 요청이 y를 반환한다는 것을 의미한다는 것입니다.
역 프록시는 y에 대한 모든 참조가 x가 되도록 y의 응답이 조정됨을 의미합니다.
사용자가 프록시가 관련되어 있음을 알 수 없도록 ...
Chris Kimpton
포워드 프록시 는 클라이언트에게 익명성을 부여합니다(즉, Tor를 생각하세요).
역방향 프록시는 백엔드 서버에 익명성을 부여합니다(즉, DMZ 뒤에 있는 서버를 생각하십시오).
8bitjunkie
내 이해대로...
먼저 모두가 알다시피 대리는 "다른 사람을 대리할 수 있는 권한"을 의미합니다. 이제 정방향 프록시와 역방향 프록시의 두 가지가 있습니다.
전달 프록시
"Google"에 액세스하려고 하고 "Google"에는 해당 특정 요청에 응답하기 위해 n개의 서버가 있다고 가정합니다.
이제 이 경우에 Google에 무언가를 요청하고 Google이 사용자의 IP 주소를 보는 것을 원하지 않는 동안 아래에 설명된 대로 정방향 프록시를 사용합니다.
A → B → C
이제 B를 통해 요청을 보내는 A가 있습니다. 따라서 C는 요청이 A가 아닌 B에서 오는 것으로 생각합니다. 이러한 방식으로 클라이언트 IP 주소가 외부 세계에 노출되지 않도록 방지할 수 있습니다.
역 프록시
이제 이 경우 이해를 돕기 위해 동일한 정방향 프록시의 경우를 사용합니다. 여기에서 Google에 무언가를 요청했으며, Google은 하나의 요청을 앱 서버 또는 다른 프록시 서버로 보내 응답을 받습니다. 따라서 이러한 일들이 아래에서 설명될 것입니다.
A → B → C
C → D
C ← D
A ← B ← C
위의 다이어그램에서 A가 아닌 B에서 C로 요청이 전송되었음을 알 수 있습니다. 그러면 C에서 D로 하나의 요청이 전송됩니다. 마찬가지로 응답은 D에서 C로 이동한 다음 B와 A로 이동합니다.
위의 다이어그램은 두 프록시가 같은 방식으로 작동하지만 중요한 것은 컨텍스트일 뿐이라고 말하지만 클라이언트 측 프록시는 클라이언트 정보를 숨기고 서버 측 프록시는 서버 측 정보를 숨깁니다.
Sourabh Sharma
다음은 역방향 프록시(로드 밸런서)의 예입니다.
클라이언트가 website.com을 검색하고 클라이언트가 적중하는 서버에는 역방향 프록시가 실행되고 있습니다. 역 프록시는 파운드 입니다. 파운드는 요청을 받아 뒤에 있는 세 개의 애플리케이션 서버 중 하나로 보냅니다. 이 예에서 파운드는 로드 밸런서입니다. 즉, 3개의 애플리케이션 서버 간에 로드 균형을 조정하고 있습니다.
응용 프로그램 서버는 웹 사이트 콘텐츠를 클라이언트에 다시 제공합니다.
ae.
정방향 프록시 는 사용자에게 서비스를 제공 합니다. 사용자 가 서버에 액세스하는 데 도움이 됩니다.
역방향 프록시 는 서버에 서비스를 제공 하며 사용자 로부터 서버 를 보호합니다.
HoangYell
프록시가 없는 경우
클라이언트 측과 서버 측에서 보는 것은 동일합니다.
클라이언트 -> 서버
대리
클라이언트 측에서:
클라이언트 -> 프록시 -> 서버
서버 측에서:
클라이언트 -> 서버
역 프록시
클라이언트 측에서:
클라이언트 -> 서버
서버 측에서:
클라이언트 -> 프록시 -> 서버
따라서 클라이언트 사용자가 설정하면 프록시라고 하고 서버 관리자가 설정하면 리버스 프록시라고 생각합니다.
설정하는 목적과 이유가 다르기 때문에 데이터를 다른 방식으로 처리하고 다른 소프트웨어를 사용합니다.
User side | Server side client <-> proxy <--> reverse_proxy <-> real server
tinyhare
사용자의 관점에서 보면: 프록시 또는 역방향 프록시 서버에 요청을 보낼 때:
프록시 - 두 개의 인수 가 필요합니다.
1) 무엇을 얻을 것인가 2) 어떤 프록시 서버를 사용할 것인지역 프록시 - 하나의 인수 가 필요합니다.
1) 무엇을 얻을 것인가
역방향 프록시는 사용자가 모르는 사이에 다른 서버에서 콘텐츠를 가져와 역방향 프록시 서버에서 가져온 것처럼 결과를 반환합니다 .
pspi
프록시 서버 (순방향 프록시라고도 함)와 역방향 프록시 서버의 차이점은 참조 지점에 따라 다릅니다.
기술적으로 둘 다 정확히 동일합니다. 둘 다 소스를 대신하여 대상으로 데이터를 전송하는 동일한 목적을 수행합니다.
차이점은 '누구를 대신하여 프록시 서버가 작동하는지 / 프록시 서버는 누구를 대표합니까?'에 있습니다.
프록시 서버가 최종 사용자를 대신하여 인터넷 서버에 요청을 전달하는 경우(예: 대학 프록시 서버를 통해 인터넷에 액세스하는 대학 학생) 프록시를 '전달 프록시' 또는 간단히 '프록시'라고 합니다.
프록시 서버가 서버를 대신하여 들어오는 요청에 응답하는 경우 프록시는 최종 사용자의 관점에서 역방향으로 작동하므로 '역방향 프록시'라고 합니다.
역방향 프록시의 몇 가지 예:
- 웹 서버 앞의 로드 밸런서는 실제 웹 서버를 대신하여 역 프록시 역할을 합니다.
- API 게이트웨이
- (페이스북 페이지/블로그 페이지 서버)와 같은 무료 웹사이트 호스팅 서비스도 역방향 프록시입니다. 실제 콘텐츠는 일부 웹 서버에 있을 수 있지만 외부 세계는 리버스 프록시가 광고하는 특정 URL을 통해 이를 알고 있습니다.
정방향 프록시 사용:
- 조직의 모든 아웃바운드 인터넷 연결 모니터링
- 인터넷 브라우징에 보안 정책 적용 및 악성 콘텐츠 다운로드 차단
- 특정 웹사이트에 대한 액세스 차단
역방향 프록시 사용:
- 웹사이트에 친숙한 URL 제시
- 여러 웹 서버에서 로드 밸런싱 수행
- 보안 정책 적용 및 공격으로부터 실제 웹 서버 보호
Gopinath
이전 답변의 대부분은 훌륭하지만 제 생각에는 둘을 구별하는 "역"품질을 충분히 잘 처리하는 데 거의 근접하지 않습니다. 그렇게 하려면 본질적으로 동일한 것(프록시)의 "역" 특성을 시각화하는 몇 가지 방법이 제공되어야 하며 잘 추상화된 방식으로 제공되어야 합니다.
프록시 (암시적으로 "정방향 프록시")는 여러 로컬 클라이언트를 하나의 원격 서버에 연결합니다.
c-- |--p--s c--
역방향 프록시 는 여러 로컬 서버를 하나의 원격 클라이언트에 연결합니다(레이아웃이 어떻게 반대인지 확인).
s-- |--p--c s--
개념을 실제로 적절하게 이해하려면 비필수적(특정 개념에 대한) 세부 사항을 추상화해야 하지만 프록시 작업의 화용론에 관해서는 매우 중요할 수 있지만 관점의 문제입니다. 이러한 세부 사항에는 두 시나리오 모두에서 현실이 여러 클라이언트가 여러 서버에 연결된다는 사실, 클라이언트와 서버가 실제로 로컬 또는 원격이 아닐 수 있다는 사실, 인터넷 클라우드가 있는 위치 또는 클라이언트와 서버 사이에 어떤 종류의 가시성이 존재한다는 사실이 포함됩니다.
Fotios Basagiannis
서비스의 목적을 생각해 봅시다.
정방향 프록시에서:
프록시는 사용자 가 서버에 액세스하는 데 도움이 됩니다.
역방향 프록시에서:
프록시는 사용자가 서버 에 액세스할 수 있도록 도와줍니다.
후자의 경우 프록시의 도움을 받는 사람은 더 이상 사용자가 아니라 서버이므로 역 프록시라고 합니다.
swanf
출처 : http:www.stackoverflow.com/questions/224664/whats-the-difference-between-a-proxy-server-and-a-reverse-proxy-server
'etc. > StackOverFlow' 카테고리의 다른 글
div를 통해 기본 요소로 클릭 (0) | 2021.12.30 |
---|---|
JavaScript 개체를 표시하려면 어떻게 해야 합니까? (0) | 2021.12.30 |
특정 파일을 어떻게 git stash 할 수 있습니까? (0) | 2021.12.30 |
프로세스와 스레드의 차이점은 무엇입니까? (0) | 2021.12.30 |
단일 SQL 쿼리에 여러 행을 삽입하시겠습니까? [복제하다] (0) | 2021.12.30 |