2017-09-05 56 views
0

我正在嘗試將NGINX配置爲正向代理來替換我們用作正向代理的Fiddler。我們使用的Fiddler功能允許我們將所有傳入請求代理到8888端口。我如何使用NGINX做到這一點?如何使用NGINX作爲任何請求位置的轉發代理?

在作爲反向代理的NGINX的所有例子中,我總是將proxy_pass定義爲特定的上游/代理服務器。我怎樣才能配置它,以便它到達請求的服務器,而不管服務器與我使用Fiddler作爲正向代理的方式相同。

實施例:

在我的代碼:

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

在mynginxproxyserver/nginx.conf我不想委派代理到另一服務器(例如proxy_pass設爲http://someotherproxyserver)。相反,我希望它只是一個代理服務器,並將來自客戶端的請求(請參閱上文)重定向到請求主機。當你將它作爲代理啓用時,這就是Fiddler所做的:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

+0

你能給一個請求的例子和你的期望嗎?我不確定你是否要求動態主機,動態IP或其他東西。這臺機器的端口是8888嗎? – Grumpy

+0

我在問題中添加了一個示例,以及如何使用Fiddler完成的鏈接。我基本上想和你通過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; 
    } 
} 

這只是重要的一點,你需要配置其餘的。

這個想法是,proxy_pass將傳遞給變量主機而不是預定義主機。所以如果你請求http://example.com/foo?bar,你的http頭將包含主機example.com。這將使您的proxy_pass從http://example.com/foo?bar退出數據。

您鏈接的文檔將其用作反向代理。這將相當於

 proxy_pass http://localhost:80; 
+1

這真的有效!我確實需要:'解析器8.8.8.8;' –

相關問題