2017-09-05 54 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;' –

相关问题