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
~~~
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 :
@ -147,6 +147,16 @@ Pour la [#gestion-des-droits]() on ajoute dans le fichier `/etc/apache2/envvars`
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
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
$ /usr/sbin/nginx -v
$ /usr/sbin/nginx -V
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
● nginx.service - A high performance web server and a reverse proxy server
@ -70,35 +73,16 @@ Fichiers de configuration :
│ ├── fastcgi-php.conf
│ └── snakeoil.conf
├── uwsgi_params
└── 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;
worker_processes auto;
pid /var/run/nginx.pid;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
use epoll;
@ -106,43 +90,95 @@ events {
}
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 ».
Enfin, on peut déléguer un certain nombre d'options générales dans des fichiers /etc/nginx/conf.d/*.conf
Le fichier `/etc/nginx/conf.d/z-evolinux-defaults.conf` contient nos optimisations basiques :
~~~
# cat /etc/nginx/conf.d/evolix.conf
# disable Nginx version
server_tokens off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 128;
server_name_in_redirect off;
# GZIP
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;
index index.html;
~~~
# HTTP cache
expires 12h;
# useful for multi-servers
add_header X-Server $hostname;
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 :
~~~
allow 192.0.2.42;
~~~
### 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
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
Ajouter dans la configuration Nginx :
@ -150,7 +186,6 @@ Ajouter dans la configuration Nginx :
~~~
location /nginx_status_NNNN {
stub_status on;
access_log off;
allow 127.0.0.1;
allow <IP>;
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
~~~
### Rewrite Rule
œ
## Rewrite Rule
<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 ?
<https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/>