Nginx で phpMyAdmin にログインするための複数のサブドメイン

Nginx で phpMyAdmin にログインするための複数のサブドメイン

2 つの異なる Web サイトの 2 つの別々のサブドメインに、同じ phpMyAdmin にログインするアクセス権を与えようとしています。

phpmyadmin.confNginx が両方のサブドメインを phpMyAdmin ログイン ページに転送する方法を認識できるようにファイルを設定する方法がわかりません。

私の Nginxserver{}ブロックは 次/etc/nginx/conf.d/phpmyadmin.confのようになります。

server {
listen 80;
listen [::]:80;
server_name pma.example.com;
root /usr/share/phpmyadmin/;
index index.php index.html index.htm index.nginx-debian.html;

access_log /var/log/nginx/phpmyadmin_access.log;
error_log /var/log/nginx/phpmyadmin_error.log;

location / {
try_files $uri $uri/ /index.php;
 }

location ~ ^/(doc|sql|setup)/ {
deny all;
 }

location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
 }

location ~ /\.ht {
deny all;
 }
}

pma.example.comそこで、サブドメインとpma.example.netメインの phpMyAdmin ログイン ページへのリダイレクトの両方をどのように設定すればよいのかを考えています。

答え1

それは違うHTTP リダイレクトしかし、Nginxは複数のホスト名またはパスから同じWebアプリケーションを提供できます。server_nameもっている

構文: server_name name ...;

あなたの場合:

server_name pma.example.com pma.example.net;

...しかし、一体なぜ暗号化されていない接続で phpMyAdmin へのアクセスを提供するのでしょうか?! したがって、代わりに共通パスを使用することをお勧めします。この方法であれば、すべてのドメインに追加の証明書やサブドメインの SAN があることを心配する必要がありません。グローバル エイリアスとして構成することも簡単です。

例えば、Cloudbooklet からのチュートリアル次のようなスニペットを追加することを提案します/etc/nginx/snippets/phpmyadmin.conf:

location /phpmyadmin {
    root /usr/share/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files $uri =404;
        root /usr/share/;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
    }
}

環境に合わせて変更します(PHP FPM バージョンなど)。その後は、すべてのブロックinclude /etc/nginx/snippets/phpmyadmin.conf;に追加するだけです。server {}

関連情報