Tente usar o suporte ao proxy reverso . Uma location
seção de exemplo seria:
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Este exemplo passará por todas as solicitações desse server
bloco para um segundo servidor em execução localhost:8080
. Isso preserva POST
e também deve preservar outros tipos de solicitação, se algum dia se tornar um problema.
O problema é que os redirecionamentos externos nunca reenviam POST
dados. Isso está escrito na especificação HTTP (consulte a seção 3xx). Qualquer cliente que faz isso está violando as especificações.
Se o código de status 301/302 for recebido em resposta a uma solicitação que não seja GET ou HEAD, o agente do usuário NÃO DEVE redirecionar automaticamente a solicitação, a menos que possa ser confirmada pelo usuário, pois isso pode alterar as condições sob as quais a solicitação foi emitida. .
Tenho certeza de que a maioria dos navegadores implementa isso simplesmente forçando a solicitação redirecionada a ser uma GET
solicitação. Teoricamente, a especificação permite um navegador que pergunte ao usuário se deve redirecionar os POST
dados, mas não conheço nenhum que atualmente o faça.