Configuración de Bloques en NGINX

El concepto de bloque en NGINX es similar al de VirtualHost en Apache. Sin embargo, vamos a crear un fichero de configuración diferente para cada URL distinta que va a servir el Webserver por la misma IP y puerto.

Configuración del fichero hosts

Lo primero de todo es configurar cada URL en el fichero /etc/hosts. Ejemplo:

[root@prt53ws1 ~]# cat /etc/hosts |grep 127
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1       silladeruedas24.com
127.0.0.1       hervidores.online
127.0.0.1       keepcalm365.com
127.0.0.1       parqueinfantil.org
127.0.0.1       puerto53.com
[root@prt53ws1 ~]#

Como vemos todas las URLs están asignadas a la IP local del servidor, algo que nos vendrá muy bien en el futuro si creamos grupos de escalado en Amazon AWS.

Configuración de NGINX

En el fichero de configuración /etc/nginx/nginx.conf, añadiremos las siguientes líneas al final del fichero, justo antes de cerrar la llave de la directiva http:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
image 1

Esto sirve para indicar que en el directorio sites-enabled vamos a crear un fichero de configuración diferente para cada una de las URLs y nginx los va a leer cuando arranque.

Configuración de cada bloque

Mejor adjunto el código fuente del fichero puerto53.conf, que es el utilizado para este blog, porque el resto son todos iguales:

[root@prt53ws1 ~]# cat /etc/nginx/sites-enabled/puerto53.conf
    # puerto53.com
    server {
        #listen       puerto53.com:80 default_server;
        listen       80;
        server_name  puerto53.com;
        #root         /usr/share/nginx/html;
        root         /app/puerto53/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
           root /app/puerto53/html/;
           index index.php index.html index.htm;
           try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

        # Caching 30 days in browser - Expire headers
        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
           expires 30d;
           add_header Pragma public;
           add_header Cache-Control "public";
        }


        location ~* \.php$ {
           fastcgi_index   index.php;
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass    127.0.0.1:9000;
           #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
           include         fastcgi_params;
           fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
           fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
           fastcgi_connect_timeout 300s;
           fastcgi_read_timeout 300s;
           fastcgi_send_timeout 300s;
       }


    }
    # puerto53.com

    # TLS puerto53.com
    server {
        ssl on;
        #listen       puerto53.com:443 ssl http2 default_server;
        listen 443;
        server_name  puerto53.com;
        root          /app/puerto53/html;

        #ssl_certificate "/app/puerto53/scripts/SSL/puerto53/puerto53.com.crt";
        ssl_certificate "/app/puerto53/scripts/SSL/puerto53/puerto53.com.chain.crt";
        ssl_certificate_key "/app/puerto53/scripts/SSL/puerto53/puerto53.com.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;


        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
           root /app/puerto53/html/;
           index index.php index.html index.htm;
           try_files $uri $uri/ /index.php?q=$uri&$args;
        }


        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

        # Caching 30 days in browser - Expire headers
        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
           expires 30d;
           add_header Pragma public;
           add_header Cache-Control "public";
        }


        location ~* \.php$ {
           fastcgi_index   index.php;
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass    127.0.0.1:9000;
           #fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
           include         fastcgi_params;
           fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
           fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
           fastcgi_connect_timeout 300s;
           fastcgi_read_timeout 300s;
           fastcgi_send_timeout 300s;
       }


    }
    # puerto53.com FIN

[root@prt53ws1 ~]#

Especial mención a las siguientes directivas:

  • El servidor WEB escucha por el puerto 443 sin especifica la IP:
    • listen 443;
  • La URL puerto53.com utiliza este fichero de configuración:
    • server_name puerto53.com;
  • El código HTML está en el directorio:
    • root /app/puerto53/html;

Te puede interesar

Guía de servidores virtuales privados (VPS)

COMPÁRTEME

Deja un comentario