nginx proxy para um proxy

2

Eu sinto que devo estar perdendo algo óbvio ... mas aqui vai.

Pergunta

É possível configurar um proxy Nginx de forma que ele não modifique o URI de solicitação de HTTP? Como?

Plano de fundo

Eu tenho um proxy reverso Nginx (A) na frente de um proxy de encaminhamento (B).

A configuração em A é uma configuração de proxy reverso simples que se parece com isso:

upstream upstreamproxy {
  server 192.168.0.69:80;
}

location / {
  proxy_set_header Host $http_host;
  proxy_pass http://upstreamproxy;
  proxy_redirect off;
  proxy_buffering off;
}

O proxy de encaminhamento B também é simples, por isso espera ver pedidos de proxy como este:

GET http://www.example.com/foo HTTP/1.1
User-Agent: curl/7.30.0
Host: www.example.com
Accept: */*
Proxy-Connection: Keep-Alive

O problema é que o proxy reverso A reescreve o URI de solicitação de HTTP, conforme mostrado:

Emita um pedido de exemplo:

my-client$ curl --proxy http://<proxy-A IP address>:80 http://www.example.com/foo

Veja o que o Proxy A está fazendo:

proxy-A$ ngrep -W byline tcp and port 80

####
T <my-client IP address>:38038 -> <proxy-A IP address>:80 [AP]
GET http://www.example.com/foo HTTP/1.1.
User-Agent: curl/7.30.0.
Host: www.example.com.
Accept: */*.
Proxy-Connection: Keep-Alive.
.

#####
T <proxy-A IP address>:57211 -> 192.168.0.69:80 [AP]
GET /foo HTTP/1.0.
Host: www.example.com.
Connection: close.
User-Agent: curl/7.30.0.
Accept: */*.
Proxy-Connection: Keep-Alive.

Observe que o URI de solicitação foi reescrito de http://www.example.com/foo para /foo . É o que estou tentando evitar.

FWIW, tentei brincar com a parte uri do proxy_pass URL sem sucesso.

    
por kkurian 21.01.2014 / 22:33

1 resposta

1

Talvez você deva alterar proxy_http_version para 1.1. Eu vi sua preocupação com o caminho, mas acho que a versão http será muito mais relevante no geral.

Melhor da sorte.

    
por 21.01.2014 / 22:43