nginx如何将proxy_pass传递给代理

我有一个nginx服务器运行。 我想向公司代理发出一些请求,并将结果返回给客户端。

假设客户端向http://ip:port/redirect/google.com发出请求,则服务器应该以请求的url作为参数向https://username:password@ip_proxy请求。

我发现接近我的问题的问题:

http://serverfault.com/questions/732063/nginx-proxy-pass-reverse-proxying-behind-corporate-firewall

http://stackoverflow.com/questions/11865119/how-to-configure-nginx-behind-a-corporate-proxy

假设205.100.100.100:80是代理URI, XXVzYTQzMjXXXDpCb25qXXyMQ==代理的凭证

一个说我们应该重写url,然后把它传递给proxy_pass指令

 location ^~ /redirect/ { rewrite ^/redirect/(.*) https://google.com; proxy_pass_header on; proxy_set_header Proxy-Authorization "XXVzYTQzMjXXXDpCb25qXXyMQ=="; proxy_pass https://205.100.100.100:80; } 

我认为它不能按预期工作,因为它显示为redirect(http代码301)

另一个说,我们应该使用主机头,并指定原始url:

 location ^~ /redirect/ { proxy_pass_header on; proxy_set_header Host "https://google.com"; proxy_set_header Proxy-Authorization "XXVzYTQzMXXXpCb25XXyMQ=="; proxy_pass https://205.100.100.100:80; } 

不起作用。 他们还说,一个代理读取指定为url参数的url类似于: http://proxy:port/url_requested so:

 location /redirect { rewrite ^/redirect/(.*)"http://205.100.100.100:80/https://google.com" break; proxy_pass_header on; proxy_set_header Proxy-Authorization "XXVzYTQzMXXXpCb25XXyMQ=="; proxy_pass http://corporate-proxy.mycorp.com:8080; } 

应该pipe用 ?

正如你所看到的,我不知道如何指定代理的用户名,密码。 我尝试使用"XXVzYTQzMjXXXDpCb25qXXyMQ=="Proxy-Authorization标头, "XXVzYTQzMjXXXDpCb25qXXyMQ=="没有任何结果。

我也尝试了http_upstream模块,没有结果。 我不能使用proxy_pass http://user:pwd@205.100.100.100:80因为nginx使用“:”来parsing端口,它给了我错误指定端口。

我应该如何继续?

也许它来自整个configuration或者他们使用代理的方式? 不知道。

这是不可能的,nginx无法与转发代理交谈。

请参阅官方邮件列表中的这个主题: http : //mailman.nginx.org/pipermail/nginx-devel/2013-March/003534.html