Configuraciones de aplicación web Nginx

Generalidades

¡POSIBLE INFORMACIÓN DESACTUALIZADA!
DreamHost no admite directamente ninguna de las funciones descritas en esta página y no es responsable de mantener este contenido actualizado o preciso. ¡Úsalo bajo tu propio riesgo!

Muchas aplicaciones web como WordPress y MediaWiki están configuradas originalmente para funcionar con Apache. Dado que los archivos .htaccess no son compatibles con Nginx, existen algunos ajustes que puedes realizar para que tus aplicaciones funcionen correctamente. En todos los ejemplos siguientes, asegúrate de seguir estos pasos.

Pasos de configuración

  1. Ve la artículo Configuraciones de archivo local para crear tu directorio /nginx/example.com.
  2. Crea tu archivo .conf en este directorio /nginx/example.com.

    El archivo .conf puede tener cualquier nombre. Solo necesita terminar en .conf.

  3. Agrega contenido al archivo .conf.
  4. Asegúrate de recargar Nginx para que los cambios surtan efecto.

Una lista de ejemplos para varias aplicaciones web pueden ser encontradas aquí:

WordPress

Crea un archivo wordpress.conf en tu directorio /home/username/nginx/example.com/.

Aquí es donde pondrás todas tus reglas de configuración de Nginx.

Si vas a compartir esta configuración de WordPress en varios sitios, crea un archivo predeterminado. Luego, crea enlaces simbólicos para cada uno de tus sitios. Por ejemplo:

  1. Crea un directorio predeterminado para tu archivo de WordPress:
    [server]$ mkdir -p /home/username/nginx/default-wp/
    
  2. En este directorio /default-wp, crea el archivo wordpress.conf. Ve el artículo 'Crear y editar un archivo a través de SSH' para más instrucciones sobre crear el archivo.
    [server]$ nano /home/YOURUSER/nginx/default-wp/wordpress.conf
  3. Guarda y cierra el archivo para regresar a tu shell.
  4. Crea enlaces simbólicos o symlinks desde este directorio, para cada uno de los directorios de configuración de tus sitios:
    [server]$ ln -s /home/username/nginx/default-wp/ /home/username/nginx/example.com
    [server]$ ln -s /home/username/nginx/default-wp/ /home/username/nginx/example2.com
    

Permalinks o enlaces permanentes

El conjunto más básico de reglas de WordPress que lo ponen en funcionamiento de inmediato son estos:

#######################
# Permalinks

if (!-e $request_filename) {
  rewrite ^.*$ /index.php last;
}

Esto pone en marcha toda la funcionalidad básica de WordPress en términos de enlaces permanentes.

Un enfoque alternativo, que no usa 'if', es el siguiente:

#######################
# Permalinks

try_files $uri $uri/ /index.php?$args;

Multisite

Si usas Multisite, necesitas reglas un poco más avanzadas:

######################
# Permalinks

if (!-e $request_filename) {
 rewrite ^/files(.*) /wp-includes/ms-files.php?file=$1 last;

 rewrite ^(/[^/]+)?(/wp-.*) $2 last;
 rewrite ^(/[^/]+)?(/.*.php) $2 last;

 rewrite ^.*$ /index.php last;
}

Esto proporciona una funcionalidad básica para Multisite.

W3 Total Cache

El plugin W3 Total Cache para WordPress reconoce automáticamente que se está ejecutando bajo Nginx y crea un archivo de configuración Nginx predeterminado que puedes copiar en tu directorio /nginx/<domain name>/.

WP Super Cache

Si estás utilizando el complemento WP Super Cache, usa lo siguiente en lugar de las reglas de enlace permanente anteriores:

#######################
# WP Super Cache

# if the requested file exists, return it immediately
if (-f $request_filename) {
  break;
}

set $supercache_file '';
set $supercache_uri $request_uri;

if ($request_method = POST) {
  set $supercache_uri '';
}

# Using pretty permalinks, so bypass the cache for any query string
if ($query_string) {
  set $supercache_uri '';
}

if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
  set $supercache_uri '';
}

# if we haven't bypassed the cache, specify our supercache file
if ($supercache_uri ~ ^(.+)$) {
  set $supercache_file /wp-content/cache/supercache/$http_host$1/index.html;
}

# only rewrite to the supercache file if it actually exists
if (-f $document_root$supercache_file) {
  rewrite ^(.*)$ $supercache_file break;
}

# all other requests go to WordPress
if (!-e $request_filename) {
  rewrite ^.*$ /index.php last;
}

FeedBurner

Si tienes la configuración de la fuente RSS de tu blog utilizando FeedBurner, entonces agrega las siguientes líneas sobre las líneas de enlace permanente o supercaché mencionadas anteriormente:

#######################
# FeedBurner

if ($http_user_agent !~ FeedBurner) {
  rewrite ^/comment/feed/ http://feeds.feedburner.com/your-comment-feed last;
  rewrite ^/feed/ http://feeds.feedburner.com/your-feed last;
}

Debes reemplazar los bits "your-comment-feed" y "your-feed" con las URL de FeedBurner correspondientes que obtienes cuando agregas tus feeds a su sistema.

Drupal

Antes de configurar Drupal, crea un archivo drupal.conf (el nombre realmente no importa, pero generalmente deseas al menos darle una extensión .conf) en la siguiente ubicación:

/home/YOURUSER/nginx/example.com/

Ve el artículo 'Crear y editar un archivo a través de SSH' para instrucciones sobre cómo crear el archivo.

[server]$ nano /home/YOURUSER/nginx/example.com/drupal.conf

Aquí es donde pondrás todas tus reglas de configuración de nginx.

Instalación de dominio de nivel superior

Si tu Drupal está instalado en el nivel superior de tu dominio (e.j., https://www.example.com/ es tu instalación Drupal), entonces añade estas reglas:

#######################
# Drupal Clean URLs (Top Level Domain)

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}

Instalación de Subdirectorio

Si tu Drupal está instalado en un subdirectorio (e.j., https://www.example.com/drupal/ es tu instalación Drupal), entonces añade estas reglas:

#######################
# Drupal Clean URLs (Subdirectory)

if (!-e $request_filename) {
rewrite ^/drupal$ /drupal/ permanent;
rewrite ^/drupal/(.*)$ /drupal/index.php?q=$1 last;
rewrite ^/(.*)$ /index.php?q=$1 last;
}

Remplaza las ocurrencias de "drupal" de arriba con cualquiera que sea el nombre de tu subdirectorio.

Habilita los Clean URLs

Si aún no lo has hecho, debes iniciar sesión en tu usuario administrador de Drupal e ir al área Administer -> Site Configuration -> Clean URLs y encender Clean URLs. Si tienes problemas para encontrarlo, intenta navegar a http://www.example.com/index.php?q=admin/settings/clean-urls. Si recibes un mensaje de error que dice que las URL limpias no son compatibles, asegúrate de recordar volver a cargar tu configuración de nginx como se discutió anteriormente en el artículo.

Gotchas

Desafortunadamente, esta configuración actualmente hace que las búsquedas de sitios que contienen espacios se rompan. Con Apache, cuando buscas "alguna cosa" que se convierte en "search/node/alguna+cosa". Cuando esto es procesado por nginx, el "+" se codifica para que termine con "search/node/alguna%20cosa". Por lo tanto, tu búsqueda termina buscando la cadena "alguna+cosa" en lugar de "Alguna cosa". Actualmente no hay soluciones alternativas conocidas que estén por venir.

MediaWiki

MediaWiki es un software wiki popular desarrollado por los fundadores de Wikipedia que continúa utilizando y manteniendo el software en la actualidad. Está disponible de forma gratuita y es un proyecto de código abierto. A continuación, se describe un movimiento exitoso del sitio MediaWiki 1.17.0 (usando URL limpias) en Apache a Nginx. Primero, crea un archivo mediawiki.conf en el directorio apropiado:

/home/YOURUSER/nginx/example.com/mediawiki.conf

En ese archivo agrega el siguiente contenido:

location / {
        try_files $uri $uri/ /index.php;
    }
	
location /cache {
        deny  all;
    }
location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
        access_log off;
    }
location /dumps {
        root /home/YOURUSER/example.com/local;
        autoindex on;
    }
### Dreamhost analog stats
if ($request_uri ~* ^/(stats|failed_auth\.html).*$)
{
	break;
}

phpBB

Aumentar el tiempo de espera de FastCGI

Pon esto en un archivo .conf como se describe arriba:

fastcgi_read_timeout 120;

Fuente: https://www.phpbb.com/community/viewtopic.php?f=46&t=1778165#p10746575

Configuraciones de envío de correos masivos

Si deseas enviar correos electrónicos masivos con autenticación SMTP, debes utilizar POP-BEFORE-SMTP como el "Método de autenticación para SMTP".

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?