Suite relecture

This commit is contained in:
Gregory Colpart 2018-02-28 01:13:11 +01:00
parent 932a9cc1ab
commit 8fc5a0868a
2 changed files with 92 additions and 45 deletions

View file

@ -95,7 +95,7 @@ Fichiers de configuration :
└── X.conf -> ../sites-available/X.conf └── X.conf -> ../sites-available/X.conf
~~~ ~~~
La configuration se trouve dans le fichier `/etc/apache2/apache2.conf` qui inclut de nombreux fichiers séparés. La configuration principale se trouve dans le fichier `/etc/apache2/apache2.conf` qui inclut de nombreux fichiers séparés.
Nous activons toujours au minimum les modules suivants : Nous activons toujours au minimum les modules suivants :
@ -147,6 +147,16 @@ Pour la [#gestion-des-droits]() on ajoute dans le fichier `/etc/apache2/envvars`
umask 007 umask 007
~~~ ~~~
### Valider la configuration
Avant de redémarrer le serveur, vérifier que vous n'ayez pas introduit des erreurs de syntaxes dans la configuration :
~~~
# apache2ctl configtest
Syntax OK
~~~
## VirtualHost ## VirtualHost
Le terme **VirtualHost** correspond à la séparation de plusieurs sites sur un même serveur HTTP. Le terme **VirtualHost** correspond à la séparation de plusieurs sites sur un même serveur HTTP.

View file

@ -15,8 +15,11 @@ Nous utilisons les paquets Debian officiels (version 1.10.3 sous Stretch et Jess
~~~ ~~~
# apt install nginx-full # apt install nginx-full
$ /usr/sbin/nginx -v $ /usr/sbin/nginx -V
nginx version: nginx/1.10.3 nginx version: nginx/1.10.3
built with OpenSSL 1.1.0f 25 May 2017
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 […]
systemctl status nginx systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server ● nginx.service - A high performance web server and a reverse proxy server
@ -71,34 +74,15 @@ Fichiers de configuration :
│ └── snakeoil.conf │ └── snakeoil.conf
├── uwsgi_params ├── uwsgi_params
└── win-utf └── win-utf
/etc/nginx/
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│   └── default
├── sites-enabled
│   └── default -> /etc/nginx/sites-available/default
├── snippets
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf
~~~ ~~~
La configuration principale se fait dans le fichier `/etc/nginx/nginx.conf` : La configuration principale se fait dans le fichier `/etc/nginx/nginx.conf` qui inclut plusieurs fichiers séparés :
~~~ ~~~
user www-data; user www-data;
worker_processes auto; worker_processes auto;
pid /var/run/nginx.pid; pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events { events {
use epoll; use epoll;
@ -106,43 +90,95 @@ events {
} }
http { http {
keepalive_timeout 15; 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;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/dhparam.pem;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
~~~ ~~~
L'un des paramètres à ajuster immédiatement est le *worker_processes*. Les _worker processes_ sont les processus fils lancés par le père (le cœur de nginx), ce sont eux qui font tout le travail, ils ne sont pas multi-threadés : il est recommandé de mettre autant de _worker processes_ que de cores disponibles sur votre serveur ou bien de laisser à « auto ». Le fichier `/etc/nginx/conf.d/z-evolinux-defaults.conf` contient nos optimisations basiques :
Enfin, on peut déléguer un certain nombre d'options générales dans des fichiers /etc/nginx/conf.d/*.conf
~~~ ~~~
# cat /etc/nginx/conf.d/evolix.conf
# disable Nginx version
server_tokens off; server_tokens off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 128;
server_name_in_redirect off;
# GZIP index index.html;
gzip_types text/css application/x-javascript text/javascript; ~~~
gzip_comp_level 5;
# http://blog.leetsoft.com/2007/7/25/nginx-gzip-ssl
gzip_buffers 16 8k;
# HTTP cache Le fichier `/etc/nginx/snippets/ipaddr_whitelist` centralise les adresses IP privilégiées, on peut ainsi utiliser `include /etc/nginx/snippets/ipaddr_whitelist;` à différents endroits dans la configuration de Nginx sans dupliquer ces adresses :
expires 12h;
# useful for multi-servers
add_header X-Server $hostname;
~~~ ~~~
allow 192.0.2.42;
~~~
### Valider la configuration ### Valider la configuration
Avant de redémarrer le serveur, vérifier que vous n'ayez pas introduit des erreurs de syntaxes dans la configuration Avant de redémarrer le serveur, vérifier que vous n'ayez pas introduit des erreurs de syntaxes dans la configuration :
~~~ ~~~
# nginx -t -c /etc/nginx/nginx.conf # nginx -t -c /etc/nginx/nginx.conf
configuration file /etc/nginx/nginx.conf test is successful configuration file /etc/nginx/nginx.conf test is successful
~~~ ~~~
## VirtualHost
De façon similaire à [Apache](HowtoApache), on peut avoir plusieurs **VirtualHost** (sites sur un même serveur HTTP).
Voici un exemple de VirtualHost via `/etc/nginx/sites-available/example` :
~~~
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/ssl/certs/www.example.com.chain.pem;
ssl_certificate_key /etc/ssl/private/www.example.com.key;
server_name www.example.com example.com;
root /home/example/www;
location / {
try_files $uri $uri/ =404;
}
location /images/ {
root /home/example/images;
}
location ~ \.css$ {
root /home/example/css;
}
access_log /home/example/log/access.log;
error_log /home/example/log/error.log;
}
~~~
Pour les directives _location_, Nginx va d'abord examiner celles avec des expressions régulières, puis les plus longues
qui seront choisies avant les plus courtes. Dans l'exemple ci-dessous, Nginx vérifiera d'abord si la ressource demandée
se termine par .css puis si elle commence par /images/ puis au final la directive _location/_.
## Monitoring
### Munin ### Munin
Ajouter dans la configuration Nginx : Ajouter dans la configuration Nginx :
@ -150,7 +186,6 @@ Ajouter dans la configuration Nginx :
~~~ ~~~
location /nginx_status_NNNN { location /nginx_status_NNNN {
stub_status on; stub_status on;
access_log off;
allow 127.0.0.1; allow 127.0.0.1;
allow <IP>; allow <IP>;
deny all; deny all;
@ -172,7 +207,8 @@ On peut ainsi activer les plugins _nginx_request_ et _nginx_status_ :
# ln -s /usr/share/munin/plugins/nginx_status nginx_status # ln -s /usr/share/munin/plugins/nginx_status nginx_status
~~~ ~~~
### Rewrite Rule œ
## Rewrite Rule
<http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite> <http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite>
@ -457,4 +493,5 @@ more_set_headers 'Server: My Server v42'
### Comment prononcer Nginx ? ### Comment prononcer Nginx ?
<https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/>