Nginx

From Joomla! Documentation

This page is a translated version of the page Nginx and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎português do Brasil • ‎中文(台灣)‎

nginx es un servidor web ligero utilizado en alrededor de 13% de todos los servidores web del mundo[1]. Nginx es una mejor opción que Apache, a menos que tengas requerimientos específicos que exijan un servidor web mucho más pesado.

A continuación encontrarás las instrucciones para ejecutar Joomla! con nginx y PHP via FastCGI.

Instalar nginx

En Ubuntu, ejecuta aptitude install nginx. En otras distribuciones, ejecuta el administrador de paquetes correspondiente, o visita http://wiki.nginx.org/Install.

Instalar PHP FastCGI

Si usas Ubuntu, lee esta excelente página acerca de como configurar PHP y FastCGI para nginx.

En Gentoo, PHP se ejecutará como un servicio FastCGI (fpm), de esa manera el servidor nginx ejecutará PHP como un proceso separado:

# echo "dev-lang/php gd gd2 curl simplexml tokenizer dom tidy sqlite xml fpm cgi" >> /etc/portage/package.use
# emerge php

Los parámetros por defecto de php-fpm funcionan de manera adecuada para la mayoría de servidores. Si necesitas configuraciones especiales, visita el sitio de PHP FPM.

Configurar Nginx

Los archivos de configuración de nginx se encuentran en:

  • /etc/nginx/sites-available/ en Ubuntu (para sitios ejecutándose en esa instancia de nginx)
  • /etc/nginx/nginx.conf en Gentoo y Raspbian (= Debian optimizado para Raspberry Pi)

Este es un ejemplo de archivo de configuración de nginx, joomla.conf, el cual puedes reutilizar en todos tus sitios que usen nginx.

server {
        listen 80;
        server_name YOUR_DOMAIN;
        server_name_in_redirect off;

        access_log /var/log/nginx/localhost.access_log;
        error_log /var/log/nginx/localhost.error_log info;

        root PATH_ON_SERVER;
        index index.php index.html index.htm default.html default.htm;
        # Support Clean (aka Search Engine Friendly) URLs
        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        # add global x-content-type-options header
        add_header X-Content-Type-Options nosniff;

        # deny running scripts inside writable directories
        location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
                return 403;
                error_page 403 /403_error.html;
        }

        location ~ \.php$ {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi.conf;
        }

        # caching of files 
        location ~* \.(ico|pdf|flv)$ {
                expires 1y;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
                expires 14d;
        }

}

Presta atención a algunos detalles:

  1. El parámetro fastcgi_pass tiene el valor 127.0.0.1:9000, el cual corresponde al puerto asignado a fpm para que 'escuche' o monitoree. Esto significa que puedes ejecutar los procesos de PHP en servidores separados. En Gentoo, puedes encontrar esta configuración en /etc/php/fpm-php5.3/php-fpm.conf/
  2. No olvides reemplazar los valores YOUR_DOMAIN & PATH_ON_SERVER por tu dominio y la ruta de Joomla en tu servidor.

Soporte GZip

Si necesitas soporte para compresión GZip, agrega la siguiente sección a la sección http del archivo de configuración principal de nginx:

        gzip on;
        gzip_http_version 1.1;
        gzip_comp_level 6;
        gzip_min_length 1100;
        gzip_buffers 4 8k;
        gzip_types text/plain application/xhtml+xml text/css application/xml application/xml+rss text/javascript application/javascript application/x-javascript
        gzip_proxied     any;
        gzip_disable     "MSIE [1-6]\.";

Fuentes