Cómo convertir reglas .htaccess a directivas NGINX

NGINX es un servidor web que se está convirtiendo en una opción cada vez más popular para el alojamiento web, ya que el dieciséis por ciento de todos los sitios en Internet utilizan NGINX. Este porcentaje aumenta constantemente ya que los clientes requieren un servidor web que pueda servir contenido más rápido. También se puede usar para proxies, proxies inversos, equilibrio de carga y más, según los módulos que cargue en NGINX. Una de las diferencias significativas entre Apache (un servidor web popular) y NGINX es la forma en que cada sistema maneja las reglas de acceso. Si está familiarizado con el uso de reglas .htaccess en Apacheentonces el método que usa NGINX para incluir directivas en el bloque vhost del servidor será un cambio sustancial.

Mostraremos cómo convertir reglas de reescritura de .htaccess a directivas de reescritura de NGINX. Las directivas de reescritura de NGINX también deberán colocarse dentro del bloque del servidor. Muchas configuraciones de servidor incluyen esta información de bloqueo de servidor en el archivo vhosts, mientras que algunas usan un archivo de configuración de NGINX independiente (para obtener más información sobre el archivo de configuración de NGINX, consulte Redirección de direcciones URL mediante NGINX). Para completar esta tarea, deberá comprender algunas directivas básicas de NGINX que analizaré en la próxima sesión.

Introducción a las directivas de reescritura y devolución de NGINX

Las directivas más utilizadas con NGINX son las directivas de retorno y reescritura. Cuando se usa una directiva NGINX, un cliente que visita una página puede ser dirigido a un directorio diferente o a una página de destino diferente. Las solicitudes también se pueden redirigir a una aplicación según las directivas que especifique. Para example, los clientes que visitan la página desde un teléfono inteligente pueden ser redirigidos a un script que está codificado específicamente para navegadores de teléfonos. Otro example sería reenviar un cliente en función de la IP o la ubicación geográfica, haciendo que su sitio sea específico para la región y adaptado al visitante en función de la ubicación.

Directiva de devolución de NGINX

La directiva de retorno es un poco menos complicada que la directiva de reescritura. La mejor práctica es usar esta directiva sobre la directiva de reescritura siempre que sea posible. Por lo general, incluirá la devolución en un contexto de servidor que especifica los dominios que se reescribirán. He incluido un común example debajo. Los clientes que visiten el sitio serán redirigidos al dominio especificado después del código de estado 301. El uso de esta directiva reenviará al cliente que visita www.CodePretest.com a www.CodePre.com.

                      
                        server {
 listen 80;
 server_name www.CodePretest.com;
 return 301 $scheme://www.CodePre.com$request_uri;
 }
                      
                    

Directiva de reescritura de NGINX

La directiva de reescritura es algo diferente a las reglas de reescritura en .htaccess. Debe colocarse en una ubicación específica o en un bloque de servidor para reescribir la URL. La directiva de reescritura generalmente se usa para realizar tareas tediosas más pequeñas. Para example, se utiliza en algunos casos para capturar elementos en la URL original o cambiar elementos en la ruta. La directiva de reescritura de NGINX puede volverse muy complicada, pero una vez que comprende la sintaxis básica, puede ser mucho menos intimidante. He incluido la sintaxis básica para una directiva de reescritura de NGINX a continuación.

                      
                        rewrite regex URL [flag];
                      
                    

Es importante saber que una directiva de reescritura casi siempre devolverá un código de estado HTTP 301 o 302. Si necesita que su servidor web devuelva un código de estado diferente, se necesita la directiva de devolución después de la reescritura. he incluido un example debajo de Documentación del módulo de reescritura de NGINX .

                      
                        server{
 ...
 rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last;
 rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra last;
 return 403;
 ...
 }
                      
                    

En esto example las URL que comienzan con /download seguidas de /media o /audio coinciden. Posteriormente, los elementos de directorios /media y /audio que contienen /mp3 tendrán la extensión de archivo .mp3 o .ra agregada a la URL. Esta directiva de devolución devolverá un 403 al cliente si la URL no coincide con la regla de reescritura.

Conversión de reglas .htaccess a directivas NGINX

Con suerte, a estas alturas ya tenemos una comprensión básica de las dos directivas NGINX más utilizadas. Sin embargo, aprender estas reglas llevará algún tiempo, ya que pueden ser muy complejas. Aprender expresiones regulares es muy útil en este proceso. Trabajaremos a través de ejemplos de reglas .htaccess de uso común que convertiremos a directivas NGINX.

Ejemplo: redirigir desde googlesyndication.com a www.example.con

Agregar www a una URL cuando un cliente solicita contenido de su servidor puede ayudar a ciertos sitios (como los alojados en WordPress) a funcionar de manera más eficiente. Una regla común de .htaccess para lograr esta reescritura es:

                      
                        RewriteCond %{HTTP_HOST} googlesyndication.com
RewriteRule (.*)https://www.googlesyndication.com$1
                      
                    

Como mencionamos anteriormente, es una buena práctica usar la directiva de retorno siempre que sea posible. A continuación, crearemos un bloque de servidor dentro de nginx.conf para realizar la misma tarea que la regla de reescritura de .htaccess anterior.

                      
                        server {
 listen 80;
 server_name googlesyndication.com;
 return 301 https://www.googlesyndication.com
 $request_uri;
 }
 server {
 listen 80'
 server_name www.googlesyndication.com;
 #...
 }
                      
                    

En esto example habrá dos bloques de servidor definidos con corchetes” {}”. Le estamos diciendo a NGINX que escuche en el puerto 80 las solicitudes para googlesyndication.com. Luego para devolver un 301 “redireccionamiento” a www.googlesyndication.com. Por lo general, dividimos estas reglas en dos bloques de servidor para que estas directivas sean lo más eficientes posible. El segundo no siempre es necesario, pero servirá contenido del directorio de trabajo si www.exampleSe solicita .com. Si no se encuentra una coincidencia exacta, NGINX verifica si hay un nombre_servidor con un comodín inicial que se ajuste. Se seleccionará la coincidencia más larga que comience con un comodín para cumplir con la solicitud.

Puede probar su sintaxis ejecutando el siguiente comando:

                      
                        nginx -t
                      
                    

Esto le permite probar la sintaxis en busca de errores antes de cargar los cambios en el archivo de configuración y posiblemente causar problemas en su sitio en vivo. Una vez que haya editado el archivo de configuración de NGINX, asegúrese de reiniciar NGINX usando un demonio o simplemente ejecutando el siguiente comando.

                      
                        nginx -s reload
                      
                    

Ejemplo: enlaces permanentes de WordPress

En esto example, he incluido uno de los conjuntos de reglas .htaccess más comunes que se usan en la actualidad. Las reglas que he incluido a continuación permiten que WordPress utilice enlaces permanentes. Esto se instala por defecto con WordPress en un Apache servidor. Un enlace permanente es una URL que está destinada a permanecer sin cambios. Para exampledomaingooglesyndication.com/blogexample.php se puede cargar como domaingooglesyndication.com/blog en la barra de direcciones de su navegador.

                      
                        <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index.php$ - [L]
 RewriteCond ${REQUEST_FILENAME} ~ - f
 RewriteCond ${REQUEST_FILENAME} ~ - d
 RewriteRule . /index.php [L]
 <IfModule>
                      
                    

A continuación se muestra el equivalente de NGINX. No se necesita una directiva de retorno o reescritura aquí, ya que solo permitimos que el sistema de administración de contenido oculte las rutas usando enlaces permanentes. Para obtener más información sobre esta tarea, consulte Documentación de NGINX sobre enlaces permanentes .

                      
                        location / {
 try_files $uri $uri/ /index.php?$args;
 }
                      
                    

Puede probar su sintaxis ejecutando el siguiente comando:

                      
                        nginx -t
                      
                    

Esto le permite probar la sintaxis en busca de errores antes de cargar los cambios en el archivo de configuración y posiblemente causar problemas en su sitio en vivo. Una vez que haya editado el archivo de configuración de NGINX, asegúrese de reiniciar NGINX usando un demonio o simplemente ejecutando el siguiente comando.

                      
                        nginx -s reload
                      
                    

Ejemplo: Forzar http a https

Otro uso popular para el archivo .htaccess es obligar al navegador a cargar el sitio usando https sobre HTTP. Esto permite que el navegador verifique que el sitio no es un riesgo de seguridad al confirmar que el sitio existe en el servidor en el que afirma estar (ver ¿Qué es un certificado SSL? ). También se puede usar para verificar la ubicación de una empresa, el número de identificación de la empresa y la ubicación. Esto ayuda a evitar visitar sitios maliciosos que pueden dañar su computadora personal o su información privada.

La siguiente regla .htaccess forzará https, de modo que las solicitudes que utilicen el puerto 80 para googlesyndication.com será redirigido a https://www.example.con.

                      
                        RewriteEngine On
RewriteCond %{HTTP_HOST} ^googlesyndication.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.googlesyndication.com/$1 [R,L]
                      
                    

Para lograr esto con NGINX, usaremos la directiva de retorno de NGINX.

                      
                        server {
listen 80;
server_name googlesyndication.com;
return 301 https://www.googlesyndication.com$request_uri;
}
                      
                    

Puede probar su sintaxis ejecutando el siguiente comando:

                      
                        nginx -t
                      
                    

Esto le permite probar la sintaxis en busca de errores antes de cargar los cambios en el archivo de configuración y posiblemente causar problemas en su sitio en vivo. Una vez que haya editado el archivo de configuración de NGINX, asegúrese de reiniciar NGINX usando un demonio o simplemente ejecutando el siguiente comando.

                      
                        nginx -s reload
                      
                    

Conclusión

Podríamos seguir y seguir con ejemplos, pero con suerte, en este punto, ahora tenemos una comprensión básica de cómo convertir .htaccess para Apache a las directivas NGINX. Si necesita más información sobre cómo realizar estas tareas, siempre puede comunicarse con nuestro soporte para obtener ayuda. Sin embargo, no admitimos completamente NGINX y se considera más allá del alcance apoyo. Esto significa que lo ayudaremos tanto como sea posible, pero es posible que no podamos resolver su problema y, en su lugar, lo remitiremos a un desarrollador para obtener asistencia adicional. Si desea utilizar el servidor web NGINX para alojar su contenido, tenemos múltiples opciones, incluida nuestra línea de VPS para cumplir con los requisitos de su negocio. Actualmente, NGINX también se está desarrollando para su uso en servidores cPanel, aunque actualmente no es compatible ni se recomienda en situaciones de producción. Ver blog de cPanel para más información.

¿Te gusta lo que ves?

Contáctenos hoy al 1.800.580.4985 para hablar con un proveedor de soluciones de hospedaje experto que pueda brindarle la información que necesita para tomar una decisión informada de inmediato.

¿Demasiado ocupado para hablar? Hacer clic AQUÍ para abrir un chat rápido con nosotros para obtener más información. ¿Te gustaría recibir la información en un correo electrónico que puedas revisar cuando quieras? Envíenos un correo electrónico hoy para obtener consejos sólidos sobre qué producto de nuestra línea se adaptaría mejor a sus necesidades.

¡Esperamos con interés escuchar de usted!

Related Posts