Nginx

  le petit serveur Web rapide

Le rôle du serveur Web est de répondre à toute demande d’une page web,par adressage d’une URL par un navigateur client,donc un rôle fondamental surtout en fonction de la charge.
A côté de l’omni-présent Apache, le programme Nginx s’est imposé grace a des performances supérieures en exploitation intensive, mais au pris de paramétrages plus abscons, et moins largement documentés sur le Web

Article publié le 8 janvier 2022, et actualisé en janvier 2022


Paramétrage par .htaccess

Attention, Nginx ne sait pas traiter les règles définies dans les fichiers .htaccess habituels d’Apache ; à la place il utilise une configuration générique au serveur, avecune syntaxe complètement différente, meme si elle reste fondée sur l’interprétation d’expressions régulières ; toutefois vous pouvez obtenir un résultat avec l’outil en-ligne https://winginx.com/en/htaccess
- voici le résultat de cette conversion automatique pour le htaccess.txt de SPIP 3.2

# nginx configuration by winginx.com

location ~ /\\..*(/.*|$) {
 return 403;
}

location / {
 if ($query_string ~ "action=rss"){
   rewrite spip.php /spip.php?page=rss break;
 }
 if ($query_string ~ "action=ical"){
   rewrite spip.php /spip.php?page=ical_prive break;
 }
 if (-e $request_filename){
   rewrite ^/rubrique([0-9]+)(\.html)?$ /spip.php?page=rubrique&id_rubrique=$1 break;
 }
 rewrite ^/([1-9][0-9]*)$ /spip.php?action=redirect&type=article&status=301&id=$1 break;
 rewrite ^/([\w]+)\.api([/.](.*))?$ /spip.php?action=api_$1&arg=$3 break;
 rewrite ^/[^\.]+(\.html)?$ /spip.php;
}

location /article {
 rewrite ^/article([0-9]+)(\.html)?$ /spip.php?page=article&id_article=$1 break;
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /breve {
 rewrite ^/breve([0-9]+)(\.html)?$ /spip.php?page=breve&id_breve=$1 break;
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /mot {
 rewrite ^/mot([0-9]+)(\.html)?$ /spip.php?page=mot&id_mot=$1 break;
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /auteur {
 rewrite ^/auteur([0-9]+)(\.html)?$ /spip.php?page=auteur&id_auteur=$1 break;
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /site {
 rewrite ^/site([0-9]+)(\.html)?$ /spip.php?page=site&id_syndic=$1 break;
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /rubrique {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /agenda {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /backend {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /backend-breves {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /distrib {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /forum {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /ical {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /plan {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /recherche {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /sommaire {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /sommaire_texte {
 rewrite ^/(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ /spip.php?page=$1 break;
}

location /resume {
 rewrite ^/resume.php[3]? /spip.php?page=sommaire break;
}

location /page {
 rewrite ^/page.php[3]? /spip.php break;
}

location /spip_cal {
 rewrite ^/spip_cal\.php3?$ /spip.php?page=ical_prive break;
}

location /spip_rss {
 rewrite ^/spip_rss\.php3?$ /spip.php?page=rss break;
}

location /robots {
 rewrite ^/robots[.]txt$ /spip.php?page=robots.txt break;
}

location /favicon {
 rewrite ^/favicon[.]ico$ /spip.php?page=favicon.ico break;
}

location /sitemap {
 rewrite ^/sitemap[.]xml$ /spip.php?page=sitemap.xml break;
}

Voici la configuration SPIP utilisée par Tech-Nova pour gérer la pluprat des règles de rewrting des SPIP installés dans les sous-dossiers de la racine :

server {

 # list of standard rules
 # listen / server_name / client_max_body_size
 # location / etc..

 error_page 404 = @spip;

 location @spip {
 # SPIP handles everything

   # "html" compatibility
   # (I often remove this part)
   rewrite ^/([^/]+)/rubrique([0-9]+)(\.html)?$    /$1/spip.php?page=rubrique&id_rubrique=$2&$args    last;
   rewrite ^/([^/]+)/article([0-9]+)(\.html)?$     /$1/spip.php?page=article&id_article=$2&$args    last;
   rewrite ^/([^/]+)/breve([0-9]+)(\.html)?$       /$1/spip.php?page=breve&id_breve=$2&$args    last;
   rewrite ^/([^/]+)/mot([0-9]+)(\.html)?$   /$1/spip.php?page=mot&id_mot=$2&$args    last;
   rewrite ^/([^/]+)/auteur([0-9]+)(\.html)?$      /$1/spip.php?page=auteur&id_auteur=$2&$args    last;
   rewrite ^/([^/]+)/site([0-9]+)(\.html)?$  /$1/spip.php?page=site&id_syndic=$2&$args    last;

   # short links
   rewrite ^/([^/]*)/([1-9][0-9]*)$  /$1/spip.php?action=redirect&type=article&status=301&id=$2&$args      last;

   # standard files
   rewrite ^/([^/]*)/robots\.txt$    /$1/spip.php?page=robots.txt    last;
   rewrite ^/([^/]*)/favicon\.ico$   /$1/spip.php?page=favicon.ico   last;
   rewrite ^/([^/]*)/sitemap\.xml$   /$1/spip.php?page=sitemap.xml   last;

   # Other SPIP custom urls
   rewrite ^/([^/]*)/(.*)(\.html)?$  /$1/spip.php?url_propre=$2&$args last;
 }

}

D’autres informations sont disponibles sur le Forum SPIP et surtout sur Contrib : Nginx-et-Spip qui renvoie à https://www.nginx.com/resources/wiki/start/topics/recipes/spip/


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 8 janvier 2022, et actualisé en janvier 2022 .

Répondre à cet article