< Le système d'exploitation GNU-Linux

Installation

sudo apt-get install nginx

Commandes

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

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

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

Variables

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

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

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

listen 80;
listen 443 ssl;

server_name

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

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

location

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

include
internal
deny
expires
fastcgi_param

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

index

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

index app.php;

return

Ex :

return 301 https://$host$request_uri;

rewrite

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

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

access_log et error_log

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

Exemples

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

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.