![使用 Nginx 登入 phpMyAdmin 的多個子網域](https://rvso.com/image/789297/%E4%BD%BF%E7%94%A8%20Nginx%20%E7%99%BB%E5%85%A5%20phpMyAdmin%20%E7%9A%84%E5%A4%9A%E5%80%8B%E5%AD%90%E7%B6%B2%E5%9F%9F.png)
我試圖讓來自 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 版本等。