Table des matières
Nginx + phpMyAdmin
En tant que féniant, je gère mes bases de données via l'excellent outil GUI phpMyAdmin
. Facile à utiliser, facile à installer, à configurer (c'est facile, il ne faut rien faire, c'est fonctionnel clé en main)… Oui, MAIS
Mais ça c'est lorsqu'on utilise apache
(ou httpd
de son vrai nom).
Voici mon fichier de conf pour utiliser phpmyadmin
avec nginx
. Ceci fonctionne avec ma config de nginx
, notamment sur la partie intégration de php dans nginx…
Installation
On ne trouve pas phpMyAdmin
dans les dépôts de base, il nous faut ceux de remi, ensuite c'est classique :
yum install phpmyadmin
Cette commande install les binaires de phpMyAdmin
et le fichier de conf pour apache
, sous forme de vhost. On va partir de ce fichier et l'adpater pour nginx.
On crée donc un fichier dans le dossier de nginx /etc/nginx/conf.d/phpmyadmin.conf
Configuration sous nginx
On veut du https !
On commence par mettre une redirection de http vers https, au cas où une url incomplète serait saisie :
server { listen 80; server_name phpmyadmin.NOM_DE_DOMAINE; rewrite ^(.*) https://phpmyadmin.NOM_DE_DOMAINE; }
Ensuite, il faut configurer la connexion en https :
server { listen 443 ssl; server_name phpmyadmin.NOM_DE_DOMAINE; ssl on; ssl_certificate /etc/pki/tls/certs/nginx.crt; ssl_certificate_key /etc/pki/tls/private/nginx.key; ssl_protocols SSLv3 TLSv1.2 TLSv1.1 TLSv1;
Du classique
Ensuite viens des lignes que l'on retrouve dans tous les sites qui executent du php
location / { index index.php index.html index.htm; } location ~\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; }
Les plus attentifs auront remarqué une différence par rapport à la conf classique, c'est le fastcgi_param HTTPS on;
, nécessaire pour que phpMyAdmin
n'envoie rien en http (ok, c'est léger comme explication, mais c'est nécessaire j'ai essayé sans et ça n'a pas marché, trouvé je sais plus où sur le web, mais une source crédible, le wiki officiel de archlinux ?).
Vous ne passerez pas !
phpMyAdmin
impose des restrictions d'accès particulières, pour qu'on ne puisse pas fouiller et récupérer des infos dans ses fichiers sensibles, voici comme on fait :
#restriction d'acces include drop.conf; location librairies/ { deny all; } location setup/lib { deny all; } location setup/frames/ { deny all; }
En bref
Le fichier de conf dans son ensemble :
## nginx conf ## fichier de conf perso pour phpmyadmin # server { listen 80; server_name phpmyadmin.NOM_DE_DOMAINE; rewrite ^(.*) https://phpmyadmin.NOM_DE_DOMAINE; } server { listen 443 ssl; server_name phpmyadmin.NOM_DE_DOMAINE; root /usr/share/phpMyAdmin; ssl on; ssl_certificate /etc/pki/tls/certs/nginx.crt; ssl_certificate_key /etc/pki/tls/private/nginx.key; ssl_protocols SSLv3 TLSv1.2 TLSv1.1 TLSv1; location / { index index.php index.html index.htm; } location ~\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; } #restriction d'acces include drop.conf; location librairies/ { deny all; } location setup/lib { deny all; } location setup/frames/ { deny all; } }