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.
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.
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.
Tags proxy nginx reverse-proxy