support nginx pour les règles .htaccess / rewrite? Différences avec Apache?

16

Je travaille avec les serveurs http Apache depuis un certain temps, et j'ai finalement opté pour des serveurs à contenu statique aux côtés des autres machines à contenu dynamique.

Je me demandais, nginx supporte-t-il les fichiers ".htaccess", et des choses comme mod_rewrite?

Comme je suis très habitué à la syntaxe, je me demandais quelles étaient les différences (syntaxiques), et à quoi ressemble la courbe d'apprentissage pour passer des configurations Apache à nginx.

lâche anonyme
la source

Réponses:

15

La syntaxe de réécriture nginx est beaucoup plus propre que celle de mod_rewrite:

règle mod_rewrite:

 RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 [QSA,L,NC]

Devient en nginx:

rewrite ^/[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 last;

Mais pas de support .htaccess ...

Modifier: Un autre exemple sur la façon de prendre en charge http://example.com/~username/ urls dans nginx:

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}
rkthkr
la source
5

nginx fournit une fonctionnalité de réécriture, vérifiez NginxHttpRewriteModule

Que voulez-vous faire avec .htaccess? Vous pouvez configurer nginx pour l'authentification de base avec NginxHttpAuthBasicModule mais les directives de configuration AFAIK ne peuvent être stockées que dans nginx.conf

zarkdav
la source
2
Essentiellement, je me posais des questions sur les paramètres par répertoire. J'irai R la FM maintenant. =)
lâche anonyme le
4

Il semblerait que nginx ait un équivalent mod_rewrite et la documentation peut être trouvée ici . Je n'ai pas utilisé nginx moi-même, mais la documentation semble que la configuration est totalement différente, mais il ne devrait pas être trop difficile de comprendre ce qu'elle fait. Le wiki semble avoir de nombreux exemples.

Je ne peux pas répondre si vous pouvez avoir des fichiers de configuration par répertoire comme vous pouvez avec apache. Cela ne me surprendrait pas si vous le pouviez, car les gens en sont venus à attendre cela en utilisant Apache.

David Pashley
la source
0

NGINX prend en charge la configuration de nombreux fichiers via la directive «include». Fondamentalement, il charge une sous-configuration et la met en place. Il prend également en charge les personnages joker, il est donc facile d'en charger plusieurs en une seule fois.

La seule limitation (à mon avis) est que vous devez recharger lorsque la configuration est modifiée. Donc, tout utilisateur qui a un morceau de configuration peut avoir besoin de droits pour recharger la configuration nginx:

/etc/ini.d/nginx force-reload (sur centos)

Je ne sais pas vraiment s'il existe un moyen d'éviter cela ou de le faire différemment car j'utilise NGINX sur de nombreux serveurs avec de nombreuses applications (hôtes virtuels) qui sont les miennes. Cela signifierait que NGINX n'est pas idéal sur l'hébergement partagé.

Néanmoins, j'aime vraiment NGINX car la configuration est tellement plus lisible qu'un mauvais fichier XML. Question de goût je suppose. L'autre bon point est évidemment la vitesse, si c'est important dans votre cas.

Bonne chance mig


la source