Configuración de Bloques en NGINX

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

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:

[[email protected] ~]# 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
[[email protected] ~]#

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;

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:

[[email protected] ~]# 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

[[email protected] ~]#

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)

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author