使用 Nginx 实现多个子域名登录 phpMyAdmin

使用 Nginx 实现多个子域名登录 phpMyAdmin

我正在尝试让来自两个不同网站的两个独立子域名有权登录同一个 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/;
    }
}

修改它以匹配您的环境:PHP FPM 版本等。之后您可以简单地添加include /etc/nginx/snippets/phpmyadmin.conf;到每个server {}块。

相关内容