2016-08-16 2 views
4

У меня работает сервер nginx. Я хочу отправить запрос корпоративному прокси и вернуть результат клиенту.nginx как proxy_pass для прокси

Скажем, клиент выдает запрос http://ip:port/redirect/google.com, сервер должен выдать запрос https://username:[email protected]_proxy с запрошенным URL-адресом в качестве параметра.

Я нашел вопросы, которые близки к моей проблеме:

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

Я думаю, что это не работает надлежащим образом потому что это показывает, как перенаправления 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, указанный в качестве параметра-то адрес, такой как: http://proxy:port/url_requested так:

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 использует «:» для разбора порта, он дает мне ошибку, указывающую порт.

Как я могу продолжить?

Возможно, это исходит из всей конфигурации, или они используют прокси-сервер? Не знаю.

ответ

3

Это невозможно, nginx не может разговаривать с прокси-сервером.

Смотрите также эту тему в официальном списке рассылки: http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003534.html

+0

Спасибо, так что нет никакого способа, чтобы передать запрашиваемое URL в заголовке? по почте они говорили о «noredirect» опции, я не могу найти патч? –

Смежные вопросы