使用 Nginx 登入 phpMyAdmin 的多個子網域

使用 Nginx 登入 phpMyAdmin 的多個子網域

我試圖讓來自 2 個不同網站的 2 個獨立子網域有權登入同一個 phpMyAdmin。

我不知道如何設定該phpmyadmin.conf文件,以便 Nginx 知道如何將兩個子網域轉發到 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/;
    }
}

include /etc/nginx/snippets/phpmyadmin.conf;修改它以符合您的server {}環境:PHP FPM 版本等。

相關內容