2016-08-16 158 views
4

我有一個nginx服務器運行。我想向公司代理髮出一些請求並將結果返回給客戶端。nginx如何proxy_pass到代理

假設客戶端向http://ip:port/redirect/google.com發出請求,則服務器應該向請求的url發送請求https://username:[email protected]_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==憑證爲代理

一說我們應該重寫網址,然後將其傳遞給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)

另外一個說,我們應該使用主機頭,並用它指定原始地址:

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; 
} 

應該工作嗎?

正如你所看到的,我不知道如何指定代理的用戶名,密碼。我試着Proxy-Authorization標題"XXVzYTQzMjXXXDpCb25qXXyMQ=="沒有結果。

我也嘗試了http_upstream模塊,沒有結果。我不能使用proxy_pass http://user:[email protected]:80,因爲nginx使用「:」解析端口,它給了我錯誤指定端口。

我該如何繼續?

也許它來自整個配置或他們使用代理的方式?不知道。

回答