web-dev-qa-db-fra.com

Soutien NGinx pour .htaccess / Règles de réécriture? Différences d'Apache?

Je travaille avec Apache HTTP Servers depuis un certain temps et je fais enfin le déplacement vers des serveurs de contenu statiques aux côtés des autres machines de contenu dynamique.

Je me demandais, Nginx supporte-vous des fichiers ".htaccess" et des choses comme mod_rewrite?

Comme je suis très habitué à la syntaxe, je me demandais quelles étaient les différences (syntaxe) et quelle est la courbe d'apprentissage comme passer des configurations Apache à Nginx.

16
anonymous coward

nginx Rewrite Syntaxe est beaucoup plus propre que la contrepartie dans mod_rewrite:

mod_rewrite règle:

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

Devient à nginx:

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

Mais pas de soutien .htaccess ...

EDIT: Un autre exemple de prise en charge http://example.com/~ansername/ URL dans NGinx:

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

nginx fournit une fonctionnalité de réécriture, chèque nginxhttprewritemodule

Que voulez-vous faire avec .htaccess? Vous pouvez configurer NGinx pour une authentification de base avec Nginxhttpauthbasicmodule mais les directives de configuration Afaik ne peuvent être stockées que dans nginx.conf

5
zarkdav

Nginx prend en charge avoir des configurations dans de nombreux fichiers via la directive "Inclure". Fondamentalement, il charge une sous-configuration et la met en place. Il prend également en charge les caractères de Joker, il est donc facile de les charger beaucoup d'entre eux dans un coup.

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

/etc/ini.d/nginx force-recharge (sur Centos)

Je ne sais pas vraiment s'il y a un moyen d'éviter cela ou de le faire différemment parce que 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'adore Nginx car la configuration est tellement plus lisible qu'un dossier XML méchant. Question de goût je suppose. L'autre bon point est évidemment une vitesse, si elle est importante dans votre cas.

Bonne chance mig

0
Mig