我有一个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