У меня работает сервер 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 использует «:» для разбора порта, он дает мне ошибку, указывающую порт.
Как я могу продолжить?
Возможно, это исходит из всей конфигурации, или они используют прокси-сервер? Не знаю.
Спасибо, так что нет никакого способа, чтобы передать запрашиваемое URL в заголовке? по почте они говорили о «noredirect» опции, я не могу найти патч? –