Nginx

From Joomla! Documentation

This page is a translated version of the page Nginx and the translation is 25% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎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.

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 API
    location /api/ {
	try_files $uri $uri/ /api/index.php?$args;
    }

    # 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/
  1. 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]\.";

Module ngx_http_gzip_static_module

The ngx_http_gzip_static_module module allows sending precompressed files with the “.gz” filename extension instead of regular files. The directive enables Nginx to stream directly the pre-gzipped files that Joomla offers. It means less processing power is needed and the files are delivered with a far better compression ratio.

To use it, update the gzip parameters in the http section of the main Nginx configuration file:

gzip on;
gzip_static 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]\.";

Note: This module is not built by default, it should be enabled with the --with-http_gzip_static_module configuration parameter. Refer to ngx_http_gzip_static_module and Building Nginx from Sources


Fuentes