Nginx がプロキシ通過のために URL を書き換える

Nginx がプロキシ通過のために URL を書き換える

Kubernetes クラスターに 2 つの nginx サーバーがあります。1 つの nginx サーバーを、phpmyadmin ファイルを提供するもう 1 つのサーバーのリバース プロキシとして機能させたいと思います。

最初のサーバーから phpmydadmin にアクセスするには、ユーザーは次のように入力する必要があります: https://mynginx.example/phpmyadmin そこから、プロキシが渡される前に、nginx サーバーが URI を書き換えて /phpmyadmin を / に置き換えるようにします。

とりあえずこれを書きます

      location                /phpmyadmin {
            rewrite           /phpmyadmin(/.*) $1 break;
            proxy_pass        https://phpmyadmin.default.svc.cluster.local:5000;
      }

しかし、実際には 404 エラーが返され、phpmyadmin を提供する nginx のログを見ると、次のようになります。

19 open() "/var/www/localhost/htdocs/phpmyadmin/phpmyadmin" failed (2: No such file or directory)

/phpmyadmin が / に置き換えられないようです。

私の設定ファイルはすべて次のとおりです:

server {
        listen                  80 default_server;
        listen                  [::]:80 default_server;

        return                  301 https://$host$request_uri;
}

server {
      listen                  443 ssl default_server;
      root                    /www;
      index                   index.html;

      ssl_certificate         /tls/tls.crt;
      ssl_certificate_key     /tls/tls.key;

      location                /phpmyadmin {
            rewrite           /phpmyadmin(/.*) $1 break;
            proxy_pass        https://phpmyadmin.default.svc.cluster.local:5000;
      }

      location                ~ /wordpress(.*) {
            return            307 $scheme://$host:5050$1;
      }
}

答え1

修正しました!正規表現(/.*)の問題だったので、/を削除したら動作するようになりました。ご協力とご提案に感謝します。リンクをたどって、いくつかのことを学びましたx)

関連情報