Instalación de NGINX y estructura general de la configuración
Esta es la segunda parte de una serie de artículos con el título Cómo montar tu propio WordPress en un serivdor VPS.
En esta sesión primero instalaremos nuestro servidor web: el interprete php y el resto de paquetes los dejaremos para otras sesiones:
$ sudo apt-get install nginx
Una vez instalado, verificamos que el servidor web se ha iniciado como servicio y funciona correctamente. También podemos ir al navegador y escribir http://localhost o http:// si tenemos el servidor alojado en internet.
$ systemctl status nginx
Ahora debemos modificar la configuración de Nginx, pero antes veamos la estructura y principales opciones (o directivas) de la configuración.
Este archivo debemos tener en cuenta que se trata de una configuración general para todos los hosts o webs que vayamos creando y que puede ser sobreescrita por los parámetros específicos de una web.
La estructura es la siguiente: # contexto principal events { # contexto events } http { # contexto html server { # contexto server } server { # contexto server } }
El archivo se divide en varias áreas o contextos que contienen cada una de las directivas. El contexto principal no está delimitado por { } y se utiliza para configurar los aspectos básicos de la aplicación. El contexto evento reside en el contexto principal, solo puede haber uno y contiene directivas sobre cómo Nginx gestiona las conexiones a nivel general. A continuación el contexto http define las directivas para gestionar las conexiones HTTP o HTTPS y finalmente el contexto server está definido dentro de html y puede haber varios, que se distinguen unos de otros por las directivas listen y server_name. Cada server sería un virtual host o servicio que proporciona el servidor web. Lo veremos más adelante en la configuración concreta de nuestro servidor.
Hay cientos de directivas que podemos configurar dentro de cada contexto. Siempre podemos consultar el listado de directivas de Nginx para hacernos una idea de para que sirven. Algunas de las directivas más importantes de este archivo son:
Contexto: General
Contexto: Events
Contexto: http
access_log
Creación de /etc/nginx.conf
Primero renombramos el archivo de configuración inicial de Nginx (/etc/nginx/nginx.conf) a un nuevo archivo y creamos uno nuevo con el contenido.
$ cd /etc/nginx/ $ sudo mv nginx.conf nginx.conf.backup $ sudo nano nginx.conf
user www-data; worker_processes 1; pid /run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include mime.types; default_type application/octet-stream; # Basic Settings charset utf-8; sendfile on; tcp_nopush on; tcp_nodelay on; types_hash_max_size 2048; server_tokens off; # Timeouts keepalive_timeout 300; #in miliseconds, default 65 send_timeout 10; #in seconds, send timeout response # SSL Settings ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; # Logging Settings access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # Gzip Settings gzip on; gzip_vary on; gzip_min_length 100; gzip_comp_level 3; gzip_types text/plain; gzip_types text/css; gzip_types text/javascript; gzip_types application/javascript; gzip_disable "msie6"; # Configure cache path fastcgi_cache_path /tmp/nginx_cache levels=1:2 keys_zone=microcache:10m max_size=1024m inactive=1h; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header microcache-status $upstream_cache_status; # Virtual Host Configs include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
Por último comprobamos que la configuración de NGINX es correcta y recargamos la configuración:
$ sudo nginx –t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful $ sudo systemctl reload nginx
Más información:
- Understanding the Nginx Configuration File Structure and Configuration Contexts (Digital Ocean)
- How to Optimize Nginx Configuration (Digital Ocean)
Más adelante, en la parte 4 de esta colección de artículos crearemos la configuración para nuestro sitio web concreto, donde veremos más directivas de Nginx.