Mysql

如何使用 Nginx 設置 phpMyAdmin?

  • October 30, 2011

我在 virtuals.conf 中為 phpMyAdmin 創建了一個條目並重新啟動了 Nginx,但我無法將它實際用於伺服器 phpMyAdmin。PHP 已安裝並配置了 Nginx for fast-cgi,virtuals.conf 條目語法檢查正常,mysql 伺服器正在執行。

FWIW,centos 是我正在執行的 CentOS VM 的主機名。

這是我的條目的樣子:

   server {
   listen 80;
   server_name mysql.centos;

   location / {
       root /usr/share/phpMyAdmin;
       index index.php;
   }

   location ~ \.php$ {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$fastcgi_script_name;
       include fastcgi_params;
   }
}

請參閱我的設置中的範例:

server {
   listen 80;
   server_name domain.com;
   # Server root
   root /home/user/domain.com/public_html;
   index index.html index.php;

   location /MySQLAdmin {
       auth_basic "Restricted Access";
       auth_basic_user_file htpasswd_file;

       alias /usr/share/phpMyAdmin/;
       try_files $uri $uri/ @fastcgi;
   }
   location ~ .+\.php$ {
       # Return '400 Bad Request' for malformed URLs
       location ~ \..*/.*\.php$ {
           return 400;
       }
       # Map 418 error code (no bady uses) to fastcgi
       error_page 418 = @fastcgi;
       return 418;
   }
   location @fastcgi {
       fastcgi_pass 127.0.0.1:9000;
       ...
   }
   location / {
       try_files $uri $uri/ @fastcgi;
   }
}

對“MySQLAdmin”的請求將由別名為 phpMyAdmin 文件夾的那個位置處理。Nginx 將直接返回靜態文件並將 PHP 發送給@fastcgi。對“.php”的請求將被發送到@fastcgi。

Nginx 嘗試為其他所有內容提供服務,並將未找到的內容髮送給@fastcgi。基本上,靜態文件將由 Nginx 提供。不會找到未明確寫出的 Index.php 請求並將其傳遞給@fastcgi。

引用自:https://serverfault.com/questions/326118