Nginx リバース プロキシ リダイレクト オリジナル ウェブサイト

Nginx リバース プロキシ リダイレクト オリジナル ウェブサイト

ログインまたはログアウトボタンをクリックすると、常に元のWebサイト/プロキシWebサイトにリダイレクトされるのはなぜですか

server {
    listen 80;
    server_name abcd.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/ssl/doremi/abcd.crt;
    ssl_certificate_key /etc/ssl/doremi/private.key;

    server_name abcd.com;

    location / {
    proxy_pass http://xyz.vip;
    proxy_set_header Accept-Encoding "";
    sub_filter 'http://xyz.vip' 'https://abcd.com';
    sub_filter 'http://xyz.vip/dashboard' 'https://abcd.com/dashboard';
    sub_filter_once off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

abcd.com のログイン ボタンをクリックすると、必ず xyz.vip に移動します。ご協力ありがとうございます。


そこで、abcd.com を curl してみましたが、以下のような結果になりました。xyz.vip を abcd.com にするのはまだよくわかりません。

curl -vv http://abcd.com/main

< HTTP/1.1 302 Found

< Server: nginx/1.14.0 (Ubuntu)

< Date: Wed, 30 Dec 2020 05:48:58 GMT

< Content-Type: text/html; charset=UTF-8

< Transfer-Encoding: chunked

< Connection: keep-alive

< location: http://xyz.vip

> <!DOCTYPE html> <html>
>     <head>
>         <meta charset="UTF-8" />
>         <meta http-equiv="refresh" content="0;url='http://xyz.vip'" />
> 
>         <title>Redirecting to http://xyz.vip</title>
>     </head>
>     <body>
>         Redirecting to <a href="http://xyz.vip">http://xyz.vip</a>.
>     </body>

答え1

いくつか試してみてはいかがでしょうか?あなたの場所にこれを追加してください

proxy_set_header ホスト $host;

または

301 https://abcd$request_uri を返します。

https://$server_name$request_uri の代わりに

私は sub_filter オプションを使用していませんが、正常に動作しています。

関連情報