trouble with forward proxying

Igor Sysoev igor at sysoev.ru
Fri May 6 22:21:44 MSD 2011


On Fri, May 06, 2011 at 12:16:55PM -0400, jfix wrote:
> Hello, I've looked far and wide but couldn't find an answer to my
> problem.
> 
> Here's a quick description: an appserver must use the company's http
> proxy for outgoing http requests, but cannot be configured. So I (tried)
> set up nginx to act as a forward proxy, like this:
> 
> server {
> 	listen 9099;
> 	resolver 10.102.10.14;
> 	location / 		{
> 		proxy_set_header X-Real-IP $remote_addr;
> 		proxy_set_header Host $http_host;
> 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> 
> 		proxy_pass
> http://proxy.example.org:80$scheme://$http_host$request_uri;
> 	}
> 	
> 	error_log	/cygdrive/E/data/logs/forward-proxy-nginx-error.log	debug;
> 	access_log  /cygdrive/E/data/logs/forward-proxy-nginx-access.log 
> combined buffer=32k;
> }
> 
> I couldn't find any config examples where the parent proxy is used in
> the proxy_pass directive. 
> 
> It seems like there is no other way to specify the company proxy than to
> add it to the proxy_pass directive. 
> 
> The error message I get is this, apparently, nginx looks for a colon and
> takes the rest as the port number:
> 
> 2011/05/06 18:01:32 [error] 2420#0: *1 invalid port in upstream
> "proxy.example.orghttp://www.google.com/", client: 127.0.0.1, server: ,
> request: "GET http://www.google.com/ HTTP/1.1", host: "www.google.com"
> 
> If I change the proxy_pass directive to 
> 
> proxy_pass
> http://proxy.example.org:80/$scheme://$http_host$request_uri;
> 
> it's the parent proxy that complains that a URL cannot start with a /
> character:
> 
> The following error was encountered while trying to retrieve the URL: <a
> href="/http://www.google.com/">/http://www.g
> oogle.com/</a>
> 
> I'm at a loss how to continue. Could somebody please help?  Thanks very
> much in advance, Jakob.

nginx is not intended to run as a forward proxy.


-- 
Igor Sysoev



More information about the nginx mailing list