Fichiers htaccess sous Nginx

Équivalent fichiers .htaccess pour Nginx

Mis à jour le 19 mai 2016 - 2 Commentaires - , , , ,

Lors de notre précédent article, nous vous parlions de l’activation des fichiers .htaccess pour votre Raspberry Pi.
Cependant, les fichiers htaccess sont une particularité d’Apache, qui bien que très pratique, n’est pas présent sur tous les types de serveurs web, notamment les serveurs Nginx.
Nous allons donc voir comment remplacer les fichiers .htaccess sous Nginx.

 

La configuration dans Nginx

La configuration de Nginx présente des points communs avec celle d’Apache, mais également des différences de tailles.

Du côté des points communs, on retrouve un fonctionnement de la configuration globalement similaire, avec :

  • Un système de configuration global, qui s’applique à tous les sites
  • Un système de configuration par site, qui ne s’applique qu’à un seul site.

Du côté des différences, deux grandes différences ressortent :

  • Premièrement une énorme différence de syntaxe.
    • Apache utilise une syntaxe qui est très représentative du monde Unix, avec un fichier de configuration principalement composé de couples sous la forme « label valeur », et éventuellement des séparations et regroupements par balises de la forme « <balise>contenu</balise> ».
    • Nginx utilise une syntaxe plus moderne, avec des blocs définis plutôt à l’aide de parenthèses, des tests conditionnels dans une forme proche de celle de nombreux langages, et là encore des couples « label valeur ».
  • Deuxièmement, l’absence de fichier .htaccess, ou de fichiers permettant de gérer la configuration directement à l’intérieur d’un site.

Dans la suite de ce tutoriel, nous allons donc voir comment limiter au maximum l’impact de ces différences.

 

Trouver une méthode équivalente aux htaccess

Tout d’abord, il faut que vous sachiez qu’il n’existe pas de possibilité de mettre en place des réglages sur les sites via la création d’un fichier à l’intérieur de ceux-ci. Cependant, il est possible de mettre en place un réglage sur un seul site, ou sur un seul dossier. Pour cela, on va utiliser le fichier de configuration dédié au site.

Mais avant de voir comment mettre en place une configuration particulière pour un site avec Nginx, répondons à une question.

Pourquoi Nginx n’utilise pas de fichiers htaccess

Les fichiers htaccess sont parfois indispensables, notamment lorsque l’on n’a pas la main sur les fichiers de configuration d’un site, comme c’est le cas lors d’un hébergement mutualisé par exemple.

Cependant, ce cas, bien que répandu, reste un cas particulier, et il serait toujours possible à un hébergeur de proposer à un utilisateur d’avoir la main sur un fichier de configuration qui serait répliqué, de façon sûre et intelligente dans un fichier de configuration plus global.

Bien souvent, avec Apache, on a tendance par facilité (et par erreur, car cela entraîne une baisse de performance) à tout régler via des fichiers .htaccess, alors qu’une configuration globale du site est bien souvent préférable.

C’est ce second comportement qu’on privilégie avec Nginx. Il y a donc entre les deux systèmes une différence notable dans la façon même d’envisager la configuration. Pas dans les capacités, car Apache aussi permet la configuration spécifique d’un site, mais dans les habitudes d’utilisation, l’absence de fichier htaccess chez Nginx nous obligeant à adopter un comportement plus adapté et propre.

C’est donc pour nous amener à adopter ce comportement plus propre, et aussi pour des questions de performances, un des axes majeurs de Nginx, que ce dernier n’implémente pas d’équivalents aux fichiers .htaccess.

Une décision certes discutable, mais pas sans intérêt.

Configuration particulière d’un site avec Nginx

Nginx utilise un système pour la configuration particulière d’un site qui est très proche de celui d’Apache.

Pour chaque site, il est possible de créer un fichier portant son nom dans le dossier « /etc/nginx/sites-enabled », et contenant les configurations particulières à appliquer pour le site.

Pour limiter l’accès à un répertoire par exemple, nous allons devoir créer ce fichier dans le répertoire « /etc/nginx/sites-enabled », avec le nom du site dont dépend le répertoire, et y mettre le code adapté.

La grosse difficulté, c’est justement de trouver le code adapté. Comme nous l’avons dit, Nginx et Apache n’utilisent pas la même syntaxe. Par conséquent, il va falloir traduire le fichier .htaccess en un format compréhensible par Nginx. Et pour cela, il existe un superbe outil, qui va convertir pour vous votre code Apache en code Nginx (attention, cela reste un outil et il vaudra souvent mieux faire une bonne recherche que de bêtement utiliser l’outil sans réfléchir).

Avant de rajouter le code dans le fichier de configuration particulier du site, assurez-vous qu’elle soit bien appliquée aux bons dossiers. Pour cela, vous devez faire deux choses :

  • Déclarer la racine du site, le dossier de base du site
  • Déclarer le dossier pour lequel devra s’appliquer la configuration

Votre fichier devra par conséquent être de la forme suivante :

root chemin_racine_du_site; #On définit le dossier de base
#On défini le dossier de la raspberry pi pour lequel on applique la configuration, depuis la racine du site.
Location chemin_du_dossier_depuis_la_racine_du_site {
 #Vos limitations
}

Votre code sera maintenant à mettre dans la partie « Location », et viendra s’appliquer au dossier que vous avez défini derrière le mot « Location ».

Vous n’avez plus qu’à redémarrer votre serveur Nginx, et voilà, vous avez un équivalent à vos .htaccess Apache pour votre serveur Nginx.

Vous n’avez désormais plus d’excuse pour laisser votre Raspberry Pi faire tourner un vieux serveur Apache plutôt qu’un joli petit Nginx, ou pire, pour continuer à héberger votre site perso chez un hébergeur plutôt que chez vous. À moins bien sûr que vous ne vous soyez pas encore décidé à acheter une Raspberry Pi et ses accessoires !

Et dans ce cas, soyons honnête, avec notre article pour savoir quels accessoires choisir, et quelle Raspberry Pi acheter, vous n’avez pas non plus réellement d’excuse !

Partager
Newsletter
Auteur :
Raspbian France
Rejoignez la communauté Raspberry Pi
Un ordinateur à 35€ déjà vendu à 10 millions d'exemplaires
ACHETEZ LA NOUVELLE RASPBERRY PI 3
Tutoriels en rapport
Installer un media-center avec OSMC sur votre Raspberry Pi ! RaspiSMS 2.0, envoyer des SMS par internet avec la Raspberry Pi Bien choisir vos accessoires pour les Raspberry Pi 3 et 2 Envoyer, gérer et recevoir des SMS avec la Raspberry Pi Installer un serveur web sur votre Raspberry (Apache + PHP + MySQL)
2 commentaires
Besoin d'aide ? Vous la trouverez plus vite sur notre forum.

  1. fahdyezz dit :

    Bonjour,
    Très captivé par la Rasp depuis quelque temps, je l’envisage comme serveur web & serveur mail afin d’héberger mon site et pour « travailler », si ça marche. Et peut-être, pourquoi pas, une seconde Rasp comme NAS.
    J’ai donc commencé à lire vos articles avec beaucoup d’intérêt – mise en page, lisibilité, formulations, facilité de compréhension des infos pour les non-initiés plus qu’appréciables, malgré quelques « erreurs » orthographiques.
    Si vous le souhaitez, faites un petit tour sur mon site et sachez que, compte-tenu de la contribution dont vous faites preuve pour fournir tous ces tutos, je vous propose de corriger vos textes gracieusement, sans aucune modification de leur sens général ou de vos codes source bien sûr, avant leur publication.
    Bravo, et continuez.

    1. Bonjour,
      nous sommes ravis que Raspbian France te plaises.
      Ta proposition est super sympa. Nous avons déjà trouvé un correcteur, mais si tu vois encore des fautes, n’hésite pas à nous envoyer un mail ou à nous mettre un commentaire.

      (Et là nous prions pour ne pas avoir fait de fautes dans ce commentaire…)

Partager
Inscription à la Newsletter
Inscrivez-vous à la Newsletter.
Vous avez aimé cet article ?
Inscrivez-vous et restez informé !