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