nginx如何将proxy_pass发送给代理

前端之家收集整理的这篇文章主要介绍了nginx如何将proxy_pass发送给代理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

让我们说客户端向http:// ip:port / redirect / google.com发出请求,服务器应该将请求发送到https:// username:password @ ip_proxy,并将请求的url作为参数.

我发现了一些与我的问题相近的问题:

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

https://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;
}

我认为它不能正常工作,因为它显示重定向(http代码301)

另一个说我们应该使用Host标头并用它指定原始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; 
}

应该管用 ?

如您所见,我不知道如何为代理指定用户名和密码.我尝试使用“XXVzYTQzMjXXXDpCb25qXXyMQ ==”的代理授权标头,但没有结果.

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

我该怎么办?

也许它来自整个配置或我使用代理的方式?不知道.

最佳答案
这是不可能的,Nginx无法与转发代理通话.

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

原文链接:https://www.f2er.com/nginx/434759.html

猜你在找的Nginx相关文章