{"id":781,"date":"2021-06-27T16:29:05","date_gmt":"2021-06-27T16:29:05","guid":{"rendered":"https:\/\/asgardius.company\/?p=781"},"modified":"2021-06-27T16:29:05","modified_gmt":"2021-06-27T16:29:05","slug":"configuraciones-basicas-del-servidor-web-nginx","status":"publish","type":"post","link":"https:\/\/asgardius.company\/?p=781","title":{"rendered":"Configuraciones b\u00e1sicas del servidor web NGINX"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/asgardius.company\/wp-content\/uploads\/2021\/06\/server-567944_960_720.png\" alt=\"\" class=\"wp-image-776\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En el art\u00edculo anterior mostr\u00e9 c\u00f3mo configurar el servidor web Apache para diferentes prop\u00f3sitos, en esta ocasi\u00f3n har\u00e9 lo mismo con NGINX<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configuraci\u00f3n de host virtual<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de haber configurado NGINX con Let&#8217;s encrypt utilizando mi tutorial para montar un servidor LEMP tendremos un archivo de configuraci\u00f3n en &#8220;\/etc\/nginx\/sites-enabled&#8221; con un contenido similar al siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    server_name frank.asgardius.company;\n    root \/var\/www\/html;\n\n    index index.html index.htm index.php;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/var\/run\/php\/php7.3-fpm.sock;\n     }\n    \n    location ~ \/\\.ht {\n        deny all;\n    }\n       \n    listen 443 ssl; # managed by Certbot\n    ssl_certificate \/etc\/letsencrypt\/live\/frank.asgardius.company\/fullchain.pem; # managed by Certbot\n    ssl_certificate_key \/etc\/letsencrypt\/live\/frank.asgardius.company\/privkey.pem; # managed by Certbot\n    include \/etc\/letsencrypt\/options-ssl-nginx.conf; # managed by Certbot\n    ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem; # managed by Certbot\n    \n}\nserver {\n    if ($host = frank.asgardius.company) {\n        return 301 https:\/\/$host$request_uri;\n    } # managed by Certbot\n    \n    \n    listen 80;\n    server_name frank.asgardius.company;\n    return 404; # managed by Certbot\n    \n        \n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El par\u00e1metro servername indica el nombre de host de nuestro sitio web. El par\u00e1metro root indica el directorio ra\u00edz de nuestro sitio web. El par\u00e1metro index indica d\u00f3nde buscar la pa\u01f5ina web predeterminada en cada directorio. En este caso cuando un cliente socicite el sitio web &#8220;frank.asgardius.company&#8221; el servidor intentar\u00e1 servir el archivo &#8220;\/var\/www\/html\/index.html&#8221;, si no lo encuentra intentar\u00e1 con &#8220;\/var\/www\/html\/index.htm&#8221; y despues con &#8220;\/var\/www\/html\/index.php&#8221;. El bloque &#8220;localtion \/&#8221; indica que si un cliente solicita un archivo que no existe devuelva un mensaje de error 404. El bloque &#8220;location ~ .php$&#8221; indica los par\u00e1metros necesarios para poder procesar los sitios web programados en PHP. El bloque &#8220;location ~ \/.ht&#8221; impide el acceso a los archivos .htacces en caso de existir por motivos de seguridad. La l\u00ednea &#8220;listen 443 ssl&#8221; indica que el sitio web estar\u00e1 disponible desde el puerto 443 con encriptado SSL. El par\u00e1metro &#8220;ssl_certificate&#8221; indica la ruta del certificado de seguridad de nuestro sitio web. El par\u00e1metro &#8220;ssl_certificate_key&#8221; indica la ruta del archivo llave requerido para hacer funcionar el certificado. La l\u00ednea Include indica la ruta de un archivo de configuraci\u00f3n con par\u00e1metros adicionales. El par\u00e1metro ssl_dhparam indica la ruta a otro archivo necesario para hacer funcionar el certificado de seguridad en NGINX. Lo \u00faltimo del archivo de configuraci\u00f3n es para redirigir las peticiones HTTP a la versi\u00f3n HTTPS del sitio web y mostrar un error 404 en caso de que la redirecci\u00f3n falle. En algunos casos al intentar configurar esta parte puede aparecer el siguiente error<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>could not build server_names_hash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto suele ocurrir al configurar un nombre de host largo en sistemas de 32 bits, lo cual se puede solucionar introduciendo la siguiente l\u00ednea dentro del bloque &#8220;http&#8221; del archivo de configuraci\u00f3n principal de NGINX<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server_names_hash_bucket_size  64;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este archivo suele encontrarse en la siguiente ruta seg\u00fan la documentaci\u00f3n oficial<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/nginx\/nginx.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Proxy inverso<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La funci\u00f3n de proxy inverso permite redirigir el tr\u00e1fico de un servidor web a trav\u00e9s de otro (Cloudflare se basa en ese principio)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para redirigir el tr\u00e1fico de una instancia de Icecast instalado en nuestro servidor web podemos agregar lo siguiente<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    location \/ {\n        proxy_pass http:\/\/127.0.0.1:8000;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos redirigir el tr\u00e1fico de un directorio espec\u00edfico en su lugar<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    location \/r3 {\n        proxy_pass http:\/\/127.0.0.1:8000\/r3;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de que el sitio a redirigir utilice tr\u00e1fico websocket agregamos el par\u00e1metro &#8220;proxy_http_version 1.1&#8221; de la siguiente forma<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    location \/socket {\n        proxy_pass http:\/\/127.0.0.1:8096;\n        proxy_http_version 1.1;\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En caso de que el sitio a redirigir utilice SSL debemos agregar el par\u00e1metro \u201cproxy_set_header Host $http_host\u201d de la siguiente forma<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    location \/ {\n        proxy_pass https:\/\/example.com;\n        proxy_set_header Host $http_host;\n    }<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En el art\u00edculo anterior mostr\u00e9 c\u00f3mo configurar el servidor web Apache para diferentes prop\u00f3sitos, en esta ocasi\u00f3n har\u00e9 lo mismo con NGINX Configuraci\u00f3n de host virtual En caso de haber configurado NGINX con Let&#8217;s encrypt utilizando mi tutorial para montar un servidor LEMP tendremos un archivo de configuraci\u00f3n en &#8220;\/etc\/nginx\/sites-enabled&#8221; con un contenido similar al&hellip; <a class=\"more-link\" href=\"https:\/\/asgardius.company\/?p=781\">Seguir leyendo <span class=\"screen-reader-text\">Configuraciones b\u00e1sicas del servidor web NGINX<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-781","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=781"}],"version-history":[{"count":0,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/781\/revisions"}],"wp:attachment":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=781"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=781"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}