O Nginx redirecciona, não o 'proxy'

Eu quero configurar o Nginx como um proxy reverso para um serviço https, porque nós temos uma usecase especial onde precisamos "un-https" uma conexão:

http://nginx_server:8080/myserver ==> https://mysecureservice

Mas o que acontece é que o serviço de https não está proxied. A Nginx redireciona-me para o serviço real, então a URL no navegador muda. Eu quero interagir com a Nginx como era o serviço real, apenas sem https.

Isto é o que eu tenho.
server {
    listen 0.0.0.0:8080 default_server;
    location /myserver {
        proxy_pass https://myserver/;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
    }
}
Author: mitchkman, 2014-07-02

2 answers

Tens de usar o proxy_redirect para lidar com o redireccionamento.

 Sets the text that should be changed in the “Location” and “Refresh” header fields of a 
 proxied server response. Suppose a proxied server returned the header field 
 “Location:https://myserver/uri/”. The directive
 will rewrite this string to “Location: http://nginx_server:8080/uri/”. 

Exemplo:

 proxy_redirect https://myserver/ http://nginx_server:8080/;

Fonte: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect

 11
Author: Tan Hong Tat, 2014-07-02 01:39:04

Você pode configurar o nginx desta forma se não quiser que o servidor faça redirecções:

server
{
    listen 80;
    server_name YOUR.OWN.DOMAIN.URL;
    location / {
        proxy_pass http://THE.SITE.URL.YOU.WANT.TO.DELEGAGE/;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
 0
Author: warch, 2018-04-25 08:39:55