web-dev-qa-db-ja.com

Nginxはプロキシではなくリダイレ​​クトします

接続を「https解除」する必要がある特別なユースケースがあるため、httpsサービスのリバースプロキシとしてNginxを設定します。

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

ただし、実際のhttpsサービスはプロキシされません。 Nginxは実際のサービスにリダイレクトするため、ブラウザーのURLが変更されます。実際のサービスであったため、httpsなしでNginxとやり取りしたいと思います。

これは私が持っているものです:

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

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

16
Tan Hong Tat

サーバーにリダイレクトを行わせたくない場合は、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;
    }
}
3
warch