===== NGINX ===== C'est un serveur web, on le dit plutôt performant (plus qu'apache). Moi je le trouve facile à configurer, même si y'a des trucs et astuces à connaître : \\ ==== NGINX + PHP ==== === Explications et installation === De base nginx ne permet pas l'execution de scripts php, il faut configurer l'interface fastcgi et installer les paquets php qui permettent de fonctionner avec l'interface fastcgi Explications # paquets nécessaires : yum isntall nginx php php-fpm ''php-fpm'' (FastCGI Process Manager) est une implémentation de fastcgi pour php, en termes simplistes, c'est un démon qui est appelé par nginx qd y'a des scripts php à executer. ''php-fpm'' se débrouille pour executer le script et renvoyer le résultat à nginx. NGINX --> PHP-FPM --> executer le script php --> retourner le résultat à nginx Il y a 2 choses à configurer : le fichier ''fastcgi_params'' et une ''location'' dans chaque virtualhost === fastcgi_params === On trouve les meilleurs infos sur le site de [[https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/|ngnix]], en bref voici le contenu du fichier ''fastcgi_params'': fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; === Config des "vhost" === Faut rajouter ceci dans le fichier location ~ \.php* { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_index index.php; #facultatif } \\ \\ ==== 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 [[nginxphp|php dans nginx]]... === Installation === On ne trouve pas ''phpMyAdmin'' dans les [[depots|dépôts]] de base, il nous faut ceux de [[depots|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; } } \\ \\ ==== WEBDAV sous NGINX ====