Le système d'exploitation GNU-Linux/Le serveur Web Nginx

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix, l'interface console
    1. Le login
    2. Variables d'environnement
    3. Commandes de base
    4. L'aide en ligne man
    5. L'éditeur de texte vi
    6. Les shells
    7. La complétion
    8. Les jokers
    9. Les répertoires importants
    10. Redirection des entrées/sorties
    11. Invoquer un programme en tâche de fond
    12. Propriétaires et droits d'accès
    13. Processus
    14. Locale
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. L'outil d'administration Webmin
    2. telnet
    3. cURL
    4. Le serveur de noms BIND
    5. Le serveur de configuration réseau DHCP
    6. Le serveur de shell distant SSH
    7. Le partage de fichiers Samba
    8. Le partage de fichiers NFS
    9. Le serveur d'impression CUPS
    10. Le serveur de fichiers FTP
    11. Le serveur Web Apache
    12. Le serveur Web Nginx
    13. La base de données MySQL
    14. La base de données Memcached
    15. La base de données Redis
    16. Le serveur de mails Postfix
    17. Les annuaires LDAP
    18. La supervision Nagios
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Erreurs connues
  10. Médiagraphie
  11. Auteurs

Installation[modifier | modifier le wikicode]

sudo apt-get install nginx

Commandes[modifier | modifier le wikicode]

Relancer le serveur :

 systemctl restart nginx

Activer un vhost :

 ln -s /etc/nginx/sites-available/mon_vhost.conf /etc/nginx/sites-enabled/
 systemctl reload nginx

La différence entre "restart" et "reload", est que le premier stoppe tout puis tente de redémarrer, alors que "reload" ne stoppe les anciens processus que si le fichier de configuration ne contient pas d'erreur, et donc que les nouveaux peuvent se lancer. Il est donc plus sécurisé.

Voir les logs :

 journalctl -u nginx

Paramètres[modifier | modifier le wikicode]

La configuration se trouve dans les fichiers .conf du dossier /etc/nginx/conf.d/.

Exemples de configuration :

client_max_body_size 32m;
fastcgi_read_timeout 600;
proxy_read_timeout 600;

vhosts[modifier | modifier le wikicode]

On peut trouver des validateurs de vhosts en ligne[1].

Variables[modifier | modifier le wikicode]

le module ngx_http_core_module offre des variables correspondant à celles d'Apache[2].

  • $host
  • $alias
  • $root
  • $realpath_root
  • $document_root : $root ou $alias de la requête
  • $document_uri
  • $request_uri
  • $fastcgi_script_name

Mots réservés[modifier | modifier le wikicode]

Comme dans Apache, la priorité entre les vhosts est déterminée par l'ordre alphabétique des .conf de /etc/nginx/sites-enables.

Les directives sont[3] :

listen[modifier | modifier le wikicode]

Host et port écoutés par le vhost. Ex :

listen 80;
listen 443 ssl;

server_name[modifier | modifier le wikicode]

URL du vhost.

  • Exemple simple : server_name x.example.com alias.example.com;
  • Pour désigner un nom de serveur invalide (généralement dans le vhost default) : server_name _;
  • Pour du regex, préfixer avec "~". Ex : server_name ~^(x|y|z)\.example\.com$;
    • Le regex permet même les groupes de capture utilisables dans la suite du vhost (ex : $ma_variable) avec la syntaxe suivante[4] : (?<ma_variable>.+). Exemple avec appel :
    server_name ~(?<branch>.+)-preprod\.example\.com$;
    root /var/www/mon_app/preprod/$branch/;

root[modifier | modifier le wikicode]

Dossier du système de fichier vers lequel redirige l'URL du vhost.

location[modifier | modifier le wikicode]

Bloc paramétrant un chemin donné au sein de l'URL du server_name. Il peut contenir plusieurs autre mots réservés.

include[modifier | modifier le wikicode]
internal[modifier | modifier le wikicode]
deny[modifier | modifier le wikicode]
expires[modifier | modifier le wikicode]
fastcgi_param[modifier | modifier le wikicode]

Définit un des paramètres FastCGI[5].

index[modifier | modifier le wikicode]

Définit l'index à exécuter. Il peut être global ou inclus dans une location. Ex :

index app.php;

return[modifier | modifier le wikicode]

Ex :

return 301 https://$host$request_uri;

rewrite[modifier | modifier le wikicode]

Réécriture d'URL[6]. Ex :

rewrite ^ http://example.com? permanent;

access_log et error_log[modifier | modifier le wikicode]

Optionnel : emplacement des logs d'accès et d'erreur. Par défaut, /var/log/nginx/access.log et error.log.

Exemples[modifier | modifier le wikicode]

Pour un site HTTP :

server {
    listen 80;

    server_name mon_site.localhost;
    root /var/www/mon_site;

    location / {
        try_files $uri /index.html =404;
    }
}

Pour un site IPv4 et IPv6 en HTTP et HTTPS :

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443;

    ssl_certificate /etc/nginx/conf.d/ssl-certs/ssl-cert-snakeoil.pem;
    ssl_certificate_key /etc/nginx/conf.d/ssl-certs/ssl-cert-snakeoil.key;
    ssl_trusted_certificate /etc/ssl/private/current.crt;

    server_name mon_site.localhost;
    root /var/www/mon_site;

    location / {
        try_files $uri /index.html =404;
    }
}
 le certificat et la clé de cryptage peuvent être générés avec OpenSSL.

Références[modifier | modifier le wikicode]