2017-09-05 16 views
0

정방향 프록시로 사용중인 Fiddler를 대체하기 위해 정방향 프록시로 NGINX를 구성하려고합니다. 우리가 사용하는 Fiddler의 기능은 8888 포트에 들어오는 모든 요청을 프록시 할 수있게합니다. NGINX로 어떻게 할 수 있습니까?요청 된 위치에 대해 NGALX를 정방향 프록시로 사용하는 방법은 무엇입니까?

역방향 프록시 인 NGINX의 모든 예에서 특정 업스트림/프록시 서버에 항상 정의 된 proxy_pass이 표시됩니다. Fiddler를 정방향 프록시로 사용하는 것과 같은 방법으로 서버에 관계없이 요청 된 서버로 이동하도록 구성하는 방법은 무엇입니까?

예 : 내 코드에서

:

WebProxy proxyObject = new WebProxy("http://mynginxproxyserver:8888/",true); 
WebRequest req = WebRequest.Create("http://www.contoso.com"); 
req.Proxy = proxyObject; 

mynginxproxyserver에서/I (예를 들어 proxy_pass이 http://someotherproxyserver로 설정) 다른 서버로 프록시를 위임하지 않으 nginx.conf. 대신 프록시 서버가되고 클라이언트 (위 참조)의 요청을 요청 호스트로 리디렉션하려고합니다. 프록시로 사용할 때 Fiddler가 수행하는 작업입니다. http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

+0

요청의 예를 들려 줄 수 있습니까? 동적 호스트, 동적 IP 또는 다른 것을 요구하는지 확신 할 수 없습니다. 이 포트 8888은 같은 기계입니까? – Grumpy

+0

질문에 예제를 추가하고 피들러 사용법에 대한 링크를 추가했습니다. 나는 기본적으로 nginx를 통해 Fiddler와 같은 일을하고 싶다. –

답변

4

코드는 리버스 프록시가 아닌 포워드 프록시 (종종 "프록시")를 사용하는 것처럼 보이며 완전히 다르게 작동합니다. 리버스 프록시는 서버 측을위한 것이고 클라이언트는 실제로 보거나 생각하지 않습니다. 그것은 백엔드 서버에서 콘텐츠를 검색하고 클라이언트에게 넘깁니다. 전달 프록시는 클라이언트가 인터넷의 나머지 부분에 연결하기 위해 설정 한 것입니다. 차례로 서버는 포워드 프록시에 대해 아무 것도 모를 수 있습니다.

fwd vs rev proxy

Nginx에 원래 리버스 프록시, 그리고 앞으로 프록시 수 있도록 설계되었습니다. 그러나 그것은 여전히 ​​앞으로 사용될 수 있습니다. 그래서 아마 많은 구성을 찾을 수 없었을 것입니다.

이것은 내가 한 번도 해 본 적이 없기 때문에 이론적 인 대답이지만 다음과 같은 구성이 작동해야합니다.

server { 
    listen  8888; 

    location/{ 
     resolver 8.8.8.8; # may or may not be necessary. 
     proxy_pass http://$http_host$uri$is_args$args; 
    } 
} 

이것은 중요한 비트 일뿐 나머지는 구성해야합니다.

idea는 proxy_pass가 미리 정의 된 호스트가 아닌 가변 호스트로 전달된다는 개념입니다. 따라서 http://example.com/foo?bar을 요청하면 http 헤더에 example.com 호스트가 포함됩니다. 그러면 proxy_pass 퇴직 데이터가 http://example.com/foo?bar에서 생성됩니다.

연결 한 문서가 역방향 프록시로 사용하고 있습니다.

 proxy_pass http://localhost:80; 
+1

실제로 작동합니다! 그리고 나는 다음을 필요로했다 :'resolver 8.8.8.8; –