Monta tu WordPress 4: Configuración NGINX para WordPress

En este artículo hablaremos del que quizá sea el archivo más importante de nuestra configuración. En él se especifica el archivo de socket para PHP, el puerto de conexión http, las reglas de cache, etc..

La configuración para nuestro host web de nginx podemos almacenarla (dentro de /etc/nginx/) tanto en sites-enabled/ como en conf.d/ aunque este último se utiliza para configuraciones particulares (restricciones generales, etc). Por último, para habilitar webs se crean enlaces simbólicos desde sites-available a sites-enabled/:

$ cd /etc/nginx/

# borramos enlace simbolico
$ sudo rm sites-enabled/default

# renombramos sitio por defecto
$ sudo mv sites-available/default sites-available/default.backup

# creamos configuracion para nuestro sitio
$ sudo nano sites-available/sitename.conf
server {
    listen       80;
    server_name  sitename.domain; 

    client_max_body_size 20m;

    index index.php index.html;
    root   /var/www/html/sitename/public_html;

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

    # pass the PHP scripts to FastCGI server
    location ~ \.php$ {
            # Basic
            try_files $uri =404;
            fastcgi_index index.php;

            # Create a no cache flag
            set $no_cache "";

            # Don't cache POSTs
            if ($request_method = POST) {
              set $no_cache 1;
            }

            # Admin stuff should not be cached
            if ($request_uri ~* "/(wp-admin/|wp-login.php)") {
              set $no_cache 1;
            }

            # If we are the admin, make sure nothing gets cached
            if ($http_cookie ~* "wordpress_logged_in_") {
              set $no_cache 1;
            }

            # Cache and cache bypass handling
            fastcgi_no_cache $no_cache;
            fastcgi_cache_bypass $no_cache;
            fastcgi_cache microcache;
            fastcgi_cache_valid 200 60m;
            fastcgi_cache_valid 404 10m;
            fastcgi_cache_use_stale updating;

            # General FastCGI handling
            fastcgi_pass unix:/var/run/php/sitename.sock;
            fastcgi_pass_header Set-Cookie;
            fastcgi_pass_header Cookie;
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_intercept_errors on;
            include fastcgi_params;         
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|ttf|svg|otf)$ {
            expires 30d;
            add_header Pragma public;
            add_header Cache-Control "public";
            access_log off;
    }
}

No vamos a entrar en cada una de las opciones porque da para un curso entero, pero pondremos explicamos algunas de las más importantes:

listen
Puerto en el que escuchará nuestra web. Para HTTPS/SSL deberemos cambiarlo a 443.
server_name
Aquí especificamos nuestro nombre de dominio, a ser posible sin el subdominio www. Si no hemos configurado nuestro dominio, poner la IP o “_” (sinónimo de localhost).
index
Página de inicio por defecto, mostrará index.php en primer lugar cuando accedamos a la dirección web.
root
Directorio de nuestra web donde almacenamos los archivos de wordpress
location ~ \.php$
Este es un nuevo contexto, ubicado dentro de server. En el especificamos todo lo relacionado con wordpress: reglas de cache, ubicación del socket.
fastcgi_cache microcache
Dentro del contexto location de PHP, asignamos la defición de cache que creamos anteriormente en el archivo /etc/nginx/nginx.conf

Print Friendly, PDF & Email

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *