NGINX

De SLM - MediaWiki

NGINX est un serveur web performant, la hierarchie des fichiers de configuration est la suivante :

  • les fichiers de configurations se trouvent généralement dans /etc/nginx/
  • les fichiers de configurations des sites se trouvent dans :
  • /etc/nginx/sites-enabled/
  • /etc/nginx/sites-available/

Avantages :

  • performant
  • faible consommation de ressources, léger
  • config. souple, language de configuration simple et accessible pour peu que l'on connaisse les REGEX pour tout ce qui est filtrage
  • idéal en tant que proxy inverse ou pour de l'équlibrage de charges
  • options et extensions disponible en masse

Inconvénients :

  • ignore les .htaccess ce qui peut engendrer de la configuration supplémentaire pour les CMS/frameworks populaires facilitant Apache avec les .htaccess comme Joomla (par exemple si l'on veut activer la réecriture d'URLs)
  • plus difficile à configurer dans certain cas contrairement à Apache (notamment pour les fonctionnalités avancées des CMS/frameworks populaires comme la réecriture d'URL)

NGINX en tant que proxy inverse

Exemple de configuration HTTPS (HTTP étant redirigé en HTTPS) pour un site ayant le domaine "monsite.com" :

       server { 
           listen 80;
           server_name monsite.com;
           # redirect to HTTPS
           rewrite ^ https://$server_name$request_uri? permanent;
           access_log /var/log/nginx/monsite.access_log;
       }
       server {
           listen 443;
           server_name monsite.com;
           # simple SSL setup with self-signed certificates available on the turnkey nginx images (https://letsencrypt.org/ can be used to obtain a trusted free certificate)
           ssl on;
           ssl_certificate /etc/nginx/ssl/server.crt;
           ssl_certificate_key /etc/nginx/ssl/server.key;
           # generic inverse proxy scheme to local VM http://10.0.1.113:80 with real ip forwarding
           location / {
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto $scheme; # this line is only useful for HTTPS
               proxy_pass http://10.0.1.113:80;
           }
           access_log /var/log/nginx/monsite.access_log;
           error_log /var/log/nginx/monsite.error_log info;
       }

Test des fichiers de configuration

nginx -t

Reload. des fichiers de configuration

nginx -s reload

Redémarrage du service NGINX sous Debian

/etc/init.d/nginx restart

ou

service nginx restart

Désactiver le service NGINX sous Debian

update-rc.d nginx disable

Bloquer une IP

Dans une règle de type "location" :

deny x.x.x.x;

Bloquer un nom d'hôte en retournant un code HTTP

Dans un bloc (exemple avec le nom d'hôte "super.ae") :

if ($http_host ~* (super.ae)) {
   return 444;
}

Retour du code 503 dans les cas de maintenance / interruption de service

Le code de réponse HTTP d'erreur serveur 503 Service Unavailable indique que le serveur n'est pas prêt à traiter la requête.

La présence d'une réponse 503 permet d'indiquer aux moteurs de recherche de revenir plus tard, n'impactant pas le SEO.

Dans un bloc :

return 503;