Nginx перенаправляет, а не прокси

Я хочу настроить Nginx в качестве обратного прокси для службы https, потому что у нас есть специальный usecase, где нам нужно" un-https " соединение:

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

но происходит то, что фактическая служба https не проксируется. Nginx перенаправляет меня на фактическую службу, поэтому URL-адрес в браузере изменяется. Я хочу взаимодействовать с Nginx, поскольку это был фактический сервис, только без https.

вот что у меня есть:

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

2 ответов


вы должны использовать proxy_redirect для обработки перенаправления.

 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/”. 

пример:

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

источник:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect


вы можете настроить nginx так, если вы не хотите, чтобы сервер делал перенаправления:

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