Red Hat, Alma Linux : Installer et utiliser NGINX
Table des matières
Nginx est un serveur HTTP, c'est le deuxième plus utilisé sur le web avec Apache.
Attention, si vous installez un serveur Web, les ports 80 (HTTP) et 443 (HTTPS) sont utilisés. Donc attention à ne pas installer apache et ngnix en même temps.
Sur CentOS, nginx se trouve dans les dépôts epel, ce dépôt doit être installé.
Il est possible d'installer d'autres versions via les Software Collections, mais ce point ne sera pas abordé dans cet article.
Si tel n'est pas le cas, l'installer puis mettre à jour le système :
Dans CentOS 7, voici les paquets disponibles et leur description:
On va donc installer me serveur web et ses modules :
On démarre le service et on l'active ensuite au démarrage :
On autorise dans le pare-feu le protocole http (ici si la zone de l'interface est public) :
A ce stade, on peut tester d'afficher la page web par défaut pour vérifier que tout fonctionne.
Les fichiers de configuration se trouvent dans /etc/nginx.
Le fichier de configuration central est nginx.conf :
On peut ajouter des fichiers de configuration personnalisés dans conf.d. Par exemple, on créé un fichier avec l'extension .conf. Exemple avec /etc/nginx/conf.d/linuxtricks.conf
La documentation sur les différentes directives sont sur https://nginx.org/en/docs/ Chapitre modules references
Après chaque modifications, il est nécessaire de recharger le service nginx.
A noter que nginx dispose d'une option permettant de vérifier la cohérence du fichier de config :
Si les tests sont OK :
On peut recharger nginx :
Dans la plupart des distributions Linux, PHP installe en dépendance apache.
Dans le contexte nginx, on va utiliser PHP-FPM.
Bien sûr, tous les modules php-* nécessaires sont installables, par exemple :
Dans le fichier nginx.conf changer
par
Et ajouter les informations suivantes pour traiter les requêtes des pages PHP :
On édite ensuite la config de php-fpm pour indiquer nginx comme utilisateur :
On démarre le service et on l'active ensuite au démarrage :
Introduction
Nginx est un serveur HTTP, c'est le deuxième plus utilisé sur le web avec Apache.
Attention, si vous installez un serveur Web, les ports 80 (HTTP) et 443 (HTTPS) sont utilisés. Donc attention à ne pas installer apache et ngnix en même temps.
Prérequis
Sur CentOS, nginx se trouve dans les dépôts epel, ce dépôt doit être installé.
Il est possible d'installer d'autres versions via les Software Collections, mais ce point ne sera pas abordé dans cet article.
Si tel n'est pas le cas, l'installer puis mettre à jour le système :
Code BASH :
yum install epel-release
Code BASH :
yum update
Installation
Dans CentOS 7, voici les paquets disponibles et leur description:
Code :
nginx-all-modules.noarch : A meta package that installs all available Nginx
nginx-filesystem.noarch : The basic directory layout for the Nginx server
nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
nginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter module
nginx-mod-http-perl.x86_64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.x86_64 : Nginx XSLT module
nginx-mod-mail.x86_64 : Nginx mail modules
nginx-mod-stream.x86_64 : Nginx stream modules
nginx.x86_64 : A high performance web server and reverse proxy server
On va donc installer me serveur web et ses modules :
Code BASH :
yum install nginx
On démarre le service et on l'active ensuite au démarrage :
Code BASH :
systemctl start nginx && systemctl enable nginx
On autorise dans le pare-feu le protocole http (ici si la zone de l'interface est public) :
Code BASH :
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
A ce stade, on peut tester d'afficher la page web par défaut pour vérifier que tout fonctionne.
Configuration de base
Les fichiers de configuration se trouvent dans /etc/nginx.
Le fichier de configuration central est nginx.conf :
Code BASH :
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2 default_server; # listen [::]:443 ssl http2 default_server; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # location / { # } # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
On peut ajouter des fichiers de configuration personnalisés dans conf.d. Par exemple, on créé un fichier avec l'extension .conf. Exemple avec /etc/nginx/conf.d/linuxtricks.conf
Code BASH :
server_tokens off; server_names_hash_max_size 512; server_names_hash_bucket_size 128; server_name_in_redirect off;
La documentation sur les différentes directives sont sur https://nginx.org/en/docs/ Chapitre modules references
Après chaque modifications, il est nécessaire de recharger le service nginx.
A noter que nginx dispose d'une option permettant de vérifier la cohérence du fichier de config :
Code BASH :
nginx -t -c /etc/nginx/nginx.conf
Si les tests sont OK :
Code :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
On peut recharger nginx :
Code BASH :
systemctl reload nginx
Nginx et PHP
Dans la plupart des distributions Linux, PHP installe en dépendance apache.
Dans le contexte nginx, on va utiliser PHP-FPM.
Code BASH :
yum install php-fpm
Bien sûr, tous les modules php-* nécessaires sont installables, par exemple :
Code BASH :
yum install php-mysql php-pdo php-gd
Dans le fichier nginx.conf changer
Code :
location / {
}
par
Code :
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
Et ajouter les informations suivantes pour traiter les requêtes des pages PHP :
Code :
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
On édite ensuite la config de php-fpm pour indiquer nginx comme utilisateur :
Code BASH :
vi /etc/php-fpm.d/www.conf
Code :
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
On démarre le service et on l'active ensuite au démarrage :
Code BASH :
systemctl start php-fpm && systemctl enable php-fpm