Astuces pour Nginx

Définir une variable d'environnement

Il peut parfois être utile de définir une variable d'environnement au niveau du serveur Web pour pouvoir basculer dans différents environnement de production.

Sous Apache, il faut utiliser la directive SetEnv. L'équivalent sous Nginx, c'est la directive env :

Apache

SetEnv APPLICATION_ENV staging

Nginx

env APPLICATION_ENV=staging;

La directive env ne peut être utilisée que dans la section principale du fichier de configuration (main). Pour associer une variable à un répertoire particulier du serveur, il faut utiliser fastcgi_param :

server {
  [..]
  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param APPLICATION_ENV staging;
  }
  [..]
}

Vous pouvez ensuite utiliser cette variable dans vos scripts PHP de la façon suivante :

<?php
switch (getenv["APPLICATION_ENV"]) {
  case 
"staging":
    [..]
    break;
  case 
"test":
    [..]
    break;
  default:
    [..]
}
?>

Règle de réécriture pour le Zend Framework

server {
  [..]
  if (!-e $request_filename){
    rewrite ^(.*)$ /index.php break;
  }
}

Si le fichier ou le répertoire demandé n'existe pas (!-e), on redirige vers index.php.

Règle de réécriture pour Drupal

server {
  [..]
  if (!-e $request_filename) {
    rewrite  ^(.*)$  /index.php?q=$1 break;
  }
}

Si le fichier ou le répertoire demandé n'existe pas, on redirige vers index.php. Le chemin indiqué est recopié dans le paramètre q.

Sitemap pour Drupal

Si vous utilisez le module Sitemap de Drupal, vous ne serez pas en mesure de visionner votre carte sous Firefox car l'extension xsl n'est pas associée avec le type Mime text/xml.

Pour résoudre ce problème, il suffit d'ajouter l'extension xsl au fichier /etc/nginx/mime.types :

text/xml xml xsl;

Etiquettes:

Ajouter un commentaire