¿Soporte nginx para reglas .htaccess / rewrite? ¿Diferencias de Apache?

16

He estado trabajando con servidores http Apache durante bastante tiempo y finalmente me mudé a servidores de contenido estático junto con otras máquinas de contenido dinámico.

Me preguntaba, ¿nginx admite archivos ".htaccess" y cosas como mod_rewrite?

Como estoy muy acostumbrado a la sintaxis, me preguntaba cuáles eran las diferencias (de la sintaxis) y cómo es la curva de aprendizaje al pasar de las configuraciones de Apache a nginx.

cobarde anónimo
fuente

Respuestas:

15

La sintaxis de reescritura de nginx es mucho más limpia que la contraparte en mod_rewrite:

regla mod_rewrite:

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

Se convierte en nginx:

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

Pero no hay soporte .htaccess ...

Editar: Otro ejemplo de cómo admitir http://example.com/~username/ urls en nginx:

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

nginx proporciona la funcionalidad de reescritura, verifique NginxHttpRewriteModule

¿Qué quieres hacer con .htaccess? Puede configurar nginx para la autenticación básica con NginxHttpAuthBasicModule, pero las directivas de configuración AFAIK solo se pueden almacenar en nginx.conf

zarkdav
fuente
2
Esencialmente me preguntaba acerca de la configuración por directorio. Iré a R the FM ahora. =)
cobarde anónimo
4

Parece que nginx tiene un equivalente de mod_rewrite y la documentación se puede encontrar aquí . No he usado nginx yo mismo, pero la documentación parece que la configuración es totalmente diferente, pero no debería ser demasiado difícil entender lo que está haciendo. La wiki parece tener muchos ejemplos.

No puedo responder si puede tener archivos de configuración por directorio como puede con apache. No me sorprendería si pudieras, porque la gente ha llegado a esperar eso del uso de apache.

David Pashley
fuente
0

NGINX admite tener configuraciones en muchos archivos a través de la directiva 'incluir'. Básicamente, carga una subconfiguración y la coloca en su lugar. También admite caracteres comodín, por lo que es fácil cargar muchos de ellos de una sola vez.

La única limitación (en mi opinión) es que necesita volver a cargar cuando se cambia la configuración. Por lo tanto, cualquier usuario que tenga una configuración puede necesitar derechos para volver a cargar la configuración de nginx:

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

Realmente no sé si hay una manera de evitar eso o hacerlo de manera diferente porque uso NGINX en muchos servidores con muchas aplicaciones (hosts virtuales) que son mías. Significaría que NGINX no es ideal en hosting compartido.

Sin embargo, realmente amo NGINX porque la configuración es mucho más legible que un archivo XML desagradable. Cuestión de gustos, supongo. El otro buen punto es obviamente la velocidad, si es importante en su caso.

Buena suerte mig


fuente