nginx comment proxy_pass à un proxy

J’ai un serveur nginx en cours d’exécution. Je souhaite envoyer une demande à un proxy d’entreprise et renvoyer le résultat au client.

Disons que le client émet une demande à l’ http://ip:port/redirect/google.com , le serveur doit envoyer la demande à https://username:password@ip_proxy avec l’URL demandée en paramètre.

J’ai trouvé des questions proches de mon problème:

http://serverfault.com/questions/732063/nginx-proxy-pass-reverse-proxying-behind-corporate-firewall
et
http://stackoverflow.com/questions/11865119/how-to-configure-nginx-behind-a-corporate-proxy

supposons que 205.100.100.100:80 est l’URI proxy et XXVzYTQzMjXXXDpCb25qXXyMQ== l’identifiant du proxy

on dit que nous devrions réécrire l’URL puis la transmettre à la directive 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; } 

Je pense que cela ne fonctionne pas comme prévu car il apparaît comme une redirection (code http 301)

Un autre dit que nous devrions utiliser l’en-tête Host et spécifier l’URL d’origine avec:

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

Ne fonctionne pas Ils disent également qu’un proxy lit l’url spécifié comme paramètre url quelque chose comme: http://proxy:port/url_requested alors:

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

Devrait marcher ?

Comme vous pouvez le voir, je ne sais pas comment spécifier le nom d’utilisateur, le mot de passe du proxy. J’ai essayé un en Proxy-Authorization tête Proxy-Authorization avec "XXVzYTQzMjXXXDpCb25qXXyMQ==" sans résultat.

J’ai aussi essayé le module http_upstream, sans résultat. Je ne peux pas utiliser proxy_pass http://user:[email protected]:80 car nginx utilise “:” pour parsingr le port, cela me donne une erreur en spécifiant le port.

Comment dois-je procéder ?

Peut-être que cela vient de la configuration entière ou de la façon dont j’utilise le proxy? Ne sais pas

Ce n’est pas possible, nginx n’est pas en mesure de communiquer avec le proxy de transmission.

Voir aussi ce fil dans la liste de diffusion officielle: http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003534.html