Outils pour utilisateurs

Outils du site


Panneau latéral

nginx

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 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 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;
        }
}



WEBDAV sous NGINX

nginx.txt · Dernière modification: 2018/10/13 20:32 (modification externe)