Outils pour utilisateurs

Outils du site


nginx

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

nginx [2015/12/12 13:17]
luc
nginx [2018/10/13 20:32]
Ligne 1: Ligne 1:
-===== 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 
-<code|bash> 
-# paquets nécessaires : 
-yum isntall nginx php php-fpm 
-</code> 
- 
-''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. 
- 
-<code> 
-NGINX --> PHP-FPM --> executer le script php --> retourner le résultat à nginx 
-</code> 
- 
-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'': 
- 
-<code> 
-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; 
-</code> 
- 
-=== Config des "vhost" === 
- 
-Faut rajouter ceci dans le fichier 
- 
-<code> 
-    location ~ \.php* { 
-        fastcgi_pass   127.0.0.1:9000; 
-        include        fastcgi_params; 
-        fastcgi_index  index.php; #facultatif 
-    } 
-</code> 
- 
-\\ 
-\\ 
- 
-==== 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 : 
-<code bash>yum install phpmyadmin</code> 
-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 : 
-<code> 
-server  { 
-        listen          80; 
-        server_name     phpmyadmin.NOM_DE_DOMAINE; 
- 
-        rewrite ^(.*)   https://phpmyadmin.NOM_DE_DOMAINE; 
-} 
-</code> 
-Ensuite, il faut configurer la connexion en https : 
-<code> 
-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; 
-</code> 
-==Du classique== 
-Ensuite viens des lignes que l'on retrouve dans tous les sites qui executent du php 
-<code> 
-        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; 
-        } 
- 
-</code> 
-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 : 
-<code> 
-        #restriction d'acces 
-        include drop.conf; 
-        location librairies/ { 
-                deny    all; 
-        } 
-        location setup/lib { 
-                deny    all; 
-        } 
-        location setup/frames/ { 
-                deny    all; 
-        } 
-</code> 
- 
-==En bref== 
- 
-Le fichier de conf dans son ensemble : 
-<code> 
-## 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; 
-        } 
-} 
-</code> 
- 
-\\ 
-\\ 
- 
-==== WEBDAV sous NGINX ==== 
- 
  
nginx.txt · Dernière modification: 2018/10/13 20:32 (modification externe)