{"id":532,"date":"2026-01-15T15:44:09","date_gmt":"2026-01-15T14:44:09","guid":{"rendered":"https:\/\/cienciaytecnology.com\/wordpress\/?p=532"},"modified":"2026-01-15T15:44:10","modified_gmt":"2026-01-15T14:44:10","slug":"nginx","status":"publish","type":"post","link":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/","title":{"rendered":"NGINX"},"content":{"rendered":"\n<p>Para entender&nbsp;<strong>Nginx<\/strong>&nbsp;(pronunciado \u00abEngine-X\u00bb),&nbsp;<mark>piensa en \u00e9l no solo como un servidor de archivos, sino como un&nbsp;<strong>sem\u00e1foro inteligente<\/strong>&nbsp;para el tr\u00e1fico de internet<\/mark>. Su \u00e9xito radica en que no abre un proceso pesado por cada visita (como hac\u00eda el antiguo Apache), sino que maneja miles de conexiones simult\u00e1neas usando muy pocos recursos. [1][3]<\/p>\n\n\n\n<p>Aqu\u00ed tienes los conceptos clave para pasar de nivel en tu servidor de DigitalOcean:<\/p>\n\n\n\n<p>1. La jerarqu\u00eda de configuraci\u00f3n<\/p>\n\n\n\n<p>No deber\u00edas meter todo en&nbsp;<code>\/var\/www\/html<\/code>. Nginx se organiza as\u00ed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>\/etc\/nginx\/nginx.conf<\/code><\/strong>: Es el archivo maestro. Define configuraciones globales como cu\u00e1ntos procesos usar. [3]<\/li>\n\n\n\n<li><strong><code>\/etc\/nginx\/sites-available\/<\/code><\/strong>: Aqu\u00ed creas archivos individuales para cada dominio (ej.\u00a0<code>miweb.com.conf<\/code>). [1]<\/li>\n\n\n\n<li><strong><code>\/etc\/nginx\/sites-enabled\/<\/code><\/strong>: Contiene \u00abaccesos directos\u00bb (enlaces simb\u00f3licos) a los archivos anteriores. Si un archivo est\u00e1 aqu\u00ed, la web est\u00e1 \u00abal aire\u00bb. [1]<\/li>\n<\/ul>\n\n\n\n<p>2. Los Bloques de Servidor (Server Blocks)<\/p>\n\n\n\n<p>Es lo m\u00e1s importante. Permiten que un solo servidor (una sola IP) tenga&nbsp;<strong>varias p\u00e1ginas web distintas<\/strong>&nbsp;(ej.&nbsp;<code>web-a.com<\/code>&nbsp;y&nbsp;<code>web-b.com<\/code>).<br>Un bloque b\u00e1sico se ve as\u00ed:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80; # Escucha en el puerto 80 (HTTP)\n    server_name misitio.com www.misitio.com; # El dominio\n\n    root \/var\/www\/misitio; # \u00a1Ya no usas \/var\/www\/html!\n    index index.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>3. \u00bfQu\u00e9 m\u00e1s puede hacer Nginx?<\/p>\n\n\n\n<p>Adem\u00e1s de servir tu HTML est\u00e1tico, Nginx tiene tres funciones \u00absuperpoderosas\u00bb:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Proxy Inverso (Reverse Proxy):<\/strong>\u00a0Esta es la raz\u00f3n por la que usas Docker. Si tienes una app de Node.js o Python corriendo en el puerto 3000, Nginx recibe la visita en el puerto 80 y la \u00abpasa\u00bb internamente a tu app de forma transparente. [1]<\/li>\n\n\n\n<li><strong>Balanceador de Carga:<\/strong>\u00a0Si tu web crece mucho, puedes tener 3 servidores y Nginx reparte las visitas entre ellos para que ninguno se colapse. [2]<\/li>\n\n\n\n<li><strong>Seguridad y SSL:<\/strong>\u00a0Nginx es donde se instalan los certificados (como\u00a0<strong>Let&#8217;s Encrypt<\/strong>) para que tu web tenga el candado verde (<code>https<\/code>). [1]<\/li>\n<\/ul>\n\n\n\n<p>4. Mejores pr\u00e1cticas para 2026<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>No uses la carpeta por defecto:<\/strong>\u00a0Crea carpetas como\u00a0<code>\/var\/www\/proyecto1<\/code>\u00a0y dale permisos a tu usuario.<\/li>\n\n\n\n<li><strong>Verifica antes de reiniciar:<\/strong>\u00a0Cada vez que cambies algo, ejecuta\u00a0<code>sudo nginx -t<\/code>. Si te da un error, no reinicies o tirar\u00e1s el servidor.<\/li>\n\n\n\n<li><strong>Gzip:<\/strong>\u00a0Puedes activar la compresi\u00f3n en la configuraci\u00f3n para que tus p\u00e1ginas carguen mucho m\u00e1s r\u00e1pido al enviarse comprimidas al navegador. [3]<\/li>\n<\/ol>\n\n\n\n<p>Para profundizar en la seguridad de tus sitios, puedes consultar las&nbsp;gu\u00edas de configuraci\u00f3n de Nginx&nbsp;para evitar errores comunes.<\/p>\n\n\n\n<p>Cuando no tienes un dominio, Nginx utiliza la&nbsp;<strong>direcci\u00f3n IP<\/strong>&nbsp;y, opcionalmente, los&nbsp;<strong>puertos<\/strong>&nbsp;o las&nbsp;<strong>rutas de las carpetas<\/strong>&nbsp;para decidir qu\u00e9 mostrar.<\/p>\n\n\n\n<p>Para organizar tus webs en carpetas separadas (fuera de&nbsp;<code>\/var\/www\/html<\/code>), seguiremos estos pasos:<\/p>\n\n\n\n<p>1. Preparar las carpetas<\/p>\n\n\n\n<p>Primero, crea una estructura organizada en tu servidor para que cada proyecto tenga su sitio:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/var\/www\/calculadora\nsudo mkdir -p \/var\/www\/ejemplo\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p><em>(Luego, mueve tus archivos&nbsp;<code>.html<\/code>&nbsp;a sus respectivas carpetas y aseg\u00farate de que se llamen&nbsp;<code>index.html<\/code>&nbsp;dentro de cada una).<\/em><\/p>\n\n\n\n<p>2. Crear los archivos de configuraci\u00f3n<\/p>\n\n\n\n<p>En Nginx,&nbsp;<strong>cada sitio debe tener su propio archivo<\/strong>&nbsp;en&nbsp;<code>\/etc\/nginx\/sites-available\/<\/code>. Vamos a crear uno para el nuevo sitio \u00abejemplo\u00bb:<\/p>\n\n\n\n<p>Ejecuta:&nbsp;<code>sudo nano \/etc\/nginx\/sites-available\/ejemplo<\/code><\/p>\n\n\n\n<p>Pega este bloque de configuraci\u00f3n:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80; \n    server_name _; # El guion bajo significa \"cualquier petici\u00f3n a esta IP\"\n\n    # Aqu\u00ed decides la URL. Si quieres que se vea en IP\/ejemplo\n    location \/ejemplo {\n        alias \/var\/www\/ejemplo\/; # Ruta de tu nueva carpeta\n        index index.html;\n    }\n\n    # Puedes a\u00f1adir m\u00e1s rutas (locations) para otros proyectos aqu\u00ed mismo\n    location \/calculadora {\n        alias \/var\/www\/calculadora\/;\n        index index.html;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>3. \u00bfD\u00f3nde van estos bloques?<\/p>\n\n\n\n<p>Como ves, los bloques van dentro de archivos individuales en&nbsp;<code>\/etc\/nginx\/sites-available\/<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Importante:<\/strong>\u00a0Nginx por defecto trae un archivo llamado\u00a0<code>default<\/code>. Si quieres que tu nueva configuraci\u00f3n mande, te recomiendo editar ese mismo archivo (<code>sudo nano \/etc\/nginx\/sites-available\/default<\/code>) y modificar su contenido por el bloque anterior.<\/li>\n<\/ul>\n\n\n\n<p>4. Activar la configuraci\u00f3n<\/p>\n\n\n\n<p>Si creaste un archivo nuevo (distinto a&nbsp;<code>default<\/code>), debes crear el \u00abacceso directo\u00bb (enlace simb\u00f3lico):<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ln -s \/etc\/nginx\/sites-available\/ejemplo \/etc\/nginx\/sites-enabled\/\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>5. Verificar y Reiniciar (Crucial)<\/p>\n\n\n\n<p>Antes de nada, comprueba que no hay errores de sintaxis:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nginx -t\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>Si dice \u00abtest is successful\u00bb, reinicia:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart nginx\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>\u00bfC\u00f3mo acceder\u00e1s ahora?<\/p>\n\n\n\n<p>Ahora, al no tener dominio, acceder\u00e1s mediante rutas en tu navegador:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>http:\/\/TU_IP\/<\/code>\u00a0-> Seguir\u00e1 mostrando lo que haya en el bloque por defecto (normalmente\u00a0<code>\/var\/www\/html<\/code>).<\/li>\n\n\n\n<li><code>http:\/\/TU_IP\/ejemplo<\/code>\u00a0-> Mostrar\u00e1 el\u00a0<code>index.html<\/code>\u00a0de\u00a0<code>\/var\/www\/ejemplo<\/code>.<\/li>\n\n\n\n<li><code>http:\/\/TU_IP\/calculadora<\/code>\u00a0-> Mostrar\u00e1 el\u00a0<code>index.html<\/code>\u00a0de\u00a0<code>\/var\/www\/calculadora<\/code>.<\/li>\n<\/ul>\n\n\n\n<p><strong>Dato avanzado:<\/strong>&nbsp;Si quieres que cada web use la IP \u00ablimpia\u00bb (sin carpetas), tendr\u00edas que usar&nbsp;<strong>puertos diferentes<\/strong>&nbsp;(ej.&nbsp;<code>TU_IP:8080<\/code>&nbsp;para calculadora y&nbsp;<code>TU_IP:8081<\/code>&nbsp;para ejemplo).<\/p>\n\n\n\n<p>Configurar tus sitios por&nbsp;<strong>puertos diferentes<\/strong>&nbsp;es una soluci\u00f3n excelente cuando solo tienes una IP, ya que te permite que cada web se comporte como una p\u00e1gina principal independiente (ej.&nbsp;<code>123.45.67.89:8080<\/code>&nbsp;y&nbsp;<code>123.45.67.89:9090<\/code>) sin necesidad de a\u00f1adir carpetas en la URL.<\/p>\n\n\n\n<p>Aqu\u00ed tienes los pasos para hacerlo en tu servidor de DigitalOcean:<\/p>\n\n\n\n<p>1. Preparar las carpetas de tus sitios<\/p>\n\n\n\n<p>Aseg\u00farate de que cada web tenga su propio directorio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Proyecto A:\u00a0<code>\/var\/www\/calculadora\/index.html<\/code><\/li>\n\n\n\n<li>Proyecto B:\u00a0<code>\/var\/www\/ejemplo\/index.html<\/code><\/li>\n<\/ul>\n\n\n\n<p>2. Crear las configuraciones de los puertos<\/p>\n\n\n\n<p>Vamos a crear dos archivos de configuraci\u00f3n distintos en&nbsp;<code>\/etc\/nginx\/sites-available\/<\/code>.<\/p>\n\n\n\n<p>Para el Proyecto A (Puerto 8080):<\/p>\n\n\n\n<p>Ejecuta:&nbsp;<code>sudo nano \/etc\/nginx\/sites-available\/calculadora<\/code><br>Pega este contenido:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 8080; # Escuchar\u00e1 en el puerto 8080\n    server_name _;\n\n    root \/var\/www\/calculadora;\n    index index.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>Para el Proyecto B (Puerto 9090):<\/p>\n\n\n\n<p>Ejecuta:&nbsp;<code>sudo nano \/etc\/nginx\/sites-available\/ejemplo<\/code><br>Pega este contenido:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 9090; # Escuchar\u00e1 en el puerto 9090\n    server_name _;\n\n    root \/var\/www\/ejemplo;\n    index index.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>3. Activar los sitios y reiniciar<\/p>\n\n\n\n<p>Ahora debemos \u00abavisar\u00bb a Nginx de que estos archivos deben usarse:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Crea los enlaces:<\/strong>bash<code>sudo ln -s \/etc\/nginx\/sites-available\/calculadora \/etc\/nginx\/sites-enabled\/ sudo ln -s \/etc\/nginx\/sites-available\/ejemplo \/etc\/nginx\/sites-enabled\/ <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n\n\n\n<li><strong>Verifica la sintaxis:<\/strong>\u00a0<code>sudo nginx -t<\/code><\/li>\n\n\n\n<li><strong>Reinicia Nginx:<\/strong>\u00a0<code>sudo systemctl restart nginx<\/code><\/li>\n<\/ol>\n\n\n\n<p>4. MUY IMPORTANTE: Abrir los puertos en el Firewall<\/p>\n\n\n\n<p>Por defecto, DigitalOcean y Ubuntu suelen bloquear puertos que no sean el 80 o 443. Debes abrirlos manualmente para poder ver tus webs:<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 8080\/tcp\nsudo ufw allow 9090\/tcp\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>5. C\u00f3mo acceder<\/p>\n\n\n\n<p>Ahora puedes entrar desde el navegador de tu Mac usando la IP y el puerto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Calculadora:<\/strong>\u00a0<code>http:\/\/TU_IP:8080<\/code><\/li>\n\n\n\n<li><strong>Ejemplo:<\/strong>\u00a0<code>http:\/\/TU_IP:9090<\/code><\/li>\n<\/ul>\n\n\n\n<p>Ventaja adicional<\/p>\n\n\n\n<p>Esta configuraci\u00f3n es ideal para&nbsp;<strong>Flame<\/strong>. Ahora, en tu dashboard de Flame, puedes a\u00f1adir dos iconos diferentes: uno que apunte directamente al puerto&nbsp;<code>8080<\/code>&nbsp;y otro al&nbsp;<code>9090<\/code>, y cada uno abrir\u00e1 su aplicaci\u00f3n correspondiente de forma limpia.<\/p>\n\n\n\n<p><strong>Parametro Nginx<\/strong><\/p>\n\n\n\n<p>Para ver la lista completa de par\u00e1metros directamente en tu terminal, puedes usar el comando est\u00e1ndar de ayuda:&nbsp;<code>nginx -h<\/code>&nbsp;o consultar el manual completo con&nbsp;<code>man nginx<\/code>.<\/p>\n\n\n\n<p>Aqu\u00ed tienes la explicaci\u00f3n de los par\u00e1metros m\u00e1s importantes y \u00fatiles para gestionar tu servidor en&nbsp;<strong>DigitalOcean<\/strong>&nbsp;este 2026:<\/p>\n\n\n\n<p>Par\u00e1metros Principales de&nbsp;<code>nginx<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>-t<\/code>\u00a0(Test):<\/strong>\u00a0Es el m\u00e1s usado. Comprueba que la sintaxis de todos tus archivos de configuraci\u00f3n sea correcta. Es\u00a0<strong>obligatorio<\/strong>\u00a0usarlo antes de reiniciar para evitar que el servidor se caiga por un error de escritura.<\/li>\n\n\n\n<li><strong><code>-T<\/code>\u00a0(Test &amp; Dump):<\/strong>\u00a0Igual que el anterior, pero adem\u00e1s de validar, muestra por pantalla toda la configuraci\u00f3n consolidada que Nginx est\u00e1 leyendo. Es muy \u00fatil para ver c\u00f3mo se combinan todos tus archivos de\u00a0<code>sites-enabled<\/code>.<\/li>\n\n\n\n<li><strong><code>-s<\/code>\u00a0(Signal):<\/strong>\u00a0Sirve para enviar \u00abse\u00f1ales\u00bb al proceso maestro de Nginx para controlarlo sin usar\u00a0<code>systemctl<\/code>. Se usa as\u00ed:\n<ul class=\"wp-block-list\">\n<li><code>nginx -s reload<\/code>: Recarga la configuraci\u00f3n sin cortar las conexiones de los usuarios.<\/li>\n\n\n\n<li><code>nginx -s stop<\/code>: Detiene el servidor inmediatamente.<\/li>\n\n\n\n<li><code>nginx -s quit<\/code>: Detiene el servidor de forma elegante (espera a que terminen las conexiones actuales).<\/li>\n\n\n\n<li><code>nginx -s reopen<\/code>: Reabre los archivos de log (\u00fatil si est\u00e1s rotando archivos de registro).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>-v<\/code>\u00a0(Version):<\/strong>\u00a0Muestra la versi\u00f3n instalada de Nginx.<\/li>\n\n\n\n<li><strong><code>-V<\/code>\u00a0(Version &amp; Config):<\/strong>\u00a0Muestra la versi\u00f3n, pero tambi\u00e9n todos los par\u00e1metros de compilaci\u00f3n y los\u00a0<strong>m\u00f3dulos<\/strong>\u00a0que tiene activos (\u00fatil si necesitas saber si tu Nginx soporta compresi\u00f3n Brotli o HTTP\/2).<\/li>\n\n\n\n<li><strong><code>-c<\/code>\u00a0(Config file):<\/strong>\u00a0Te permite iniciar Nginx usando un archivo de configuraci\u00f3n espec\u00edfico en lugar del predeterminado. Ejemplo:\u00a0<code>nginx -c \/ruta\/a\/tu\/config_especial.conf<\/code>.<\/li>\n\n\n\n<li><strong><code>-g<\/code>\u00a0(Global directives):<\/strong>\u00a0Permite pasar directivas de configuraci\u00f3n directamente desde la l\u00ednea de comandos. Se usa mucho en entornos\u00a0<strong>Docker<\/strong>\u00a0para ajustar par\u00e1metros al vuelo.<\/li>\n\n\n\n<li><strong><code>-p<\/code>\u00a0(Prefix):<\/strong>\u00a0Establece la ruta base (prefijo) donde Nginx buscar\u00e1 sus archivos de configuraci\u00f3n y logs.<\/li>\n<\/ul>\n\n\n\n<p>Resumen de uso t\u00edpico para tu flujo de trabajo:<\/p>\n\n\n\n<p>Cada vez que edites tu calculadora o tu web de ejemplo en&nbsp;<code>sites-available<\/code>, tu rutina deber\u00eda ser:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>sudo nginx -t<\/code>\u00a0(Para verificar que no rompiste nada).<\/li>\n\n\n\n<li><code>sudo nginx -s reload<\/code>\u00a0(Para aplicar los cambios al instante).<\/li>\n<\/ol>\n\n\n\n<p><strong>Nginx vs Apache2<\/strong><\/p>\n\n\n\n<p>Esta es una de las comparaciones m\u00e1s importantes en la administraci\u00f3n de servidores. Aunque ambos sirven para lo mismo (entregar contenido web), su filosof\u00eda de dise\u00f1o es opuesta.<\/p>\n\n\n\n<p>1. El gran ausente: Los archivos&nbsp;<code>.htaccess<\/code><\/p>\n\n\n\n<p>Nginx&nbsp;<strong>no tiene<\/strong>&nbsp;ni admite archivos&nbsp;<code>.htaccess<\/code>. Esta es la diferencia m\u00e1s grande a nivel de configuraci\u00f3n local.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache:<\/strong>\u00a0El servidor busca un archivo\u00a0<code>.htaccess<\/code>\u00a0en cada carpeta antes de servir un archivo. Esto permite que un usuario cambie la configuraci\u00f3n (redirecciones, contrase\u00f1as) sin tocar el archivo principal del servidor.<\/li>\n\n\n\n<li><strong>En Nginx:<\/strong>\u00a0Por dise\u00f1o y rendimiento, Nginx\u00a0<strong>solo lee la configuraci\u00f3n al arrancar<\/strong>. No busca archivos en las carpetas de las webs.\n<ul class=\"wp-block-list\">\n<li><em>Ventaja:<\/em>\u00a0Nginx es mucho m\u00e1s r\u00e1pido porque no tiene que escanear el disco buscando archivos\u00a0<code>.htaccess<\/code>\u00a0en cada petici\u00f3n.<\/li>\n\n\n\n<li><em>Desventaja:<\/em>\u00a0Cualquier cambio (como una redirecci\u00f3n) requiere que edites el archivo en\u00a0<code>\/etc\/nginx\/sites-available\/<\/code>\u00a0y hagas un\u00a0<code>reload<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>2. Similitudes (Conceptos que ya conoces)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>M\u00f3dulos:<\/strong>\u00a0Ambos son modulares. Puedes a\u00f1adir funciones como compresi\u00f3n, seguridad o soporte para lenguajes.<\/li>\n\n\n\n<li><strong>Hosts Virtuales:<\/strong>\u00a0Lo que en Apache llamas\u00a0<code>VirtualHosts<\/code>, en Nginx se llaman\u00a0<code>Server Blocks<\/code>. Funcionan igual: separan webs por dominio, IP o puerto.<\/li>\n\n\n\n<li><strong>Logs:<\/strong>\u00a0Ambos generan un\u00a0<code>access.log<\/code>\u00a0(qui\u00e9n entra) y un\u00a0<code>error.log<\/code>\u00a0(qu\u00e9 fall\u00f3), y los guardan en\u00a0<code>\/var\/log\/nginx\/<\/code>\u00a0o\u00a0<code>\/var\/log\/apache2\/<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>3. Diferencias Clave (Por qu\u00e9 Nginx es \u00abligero\u00bb)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th class=\"has-text-align-left\" data-align=\"left\">Caracter\u00edstica<\/th><th class=\"has-text-align-left\" data-align=\"left\">Apache2<\/th><th class=\"has-text-align-left\" data-align=\"left\">Nginx<\/th><\/tr><tr><td><strong>Arquitectura<\/strong><\/td><td>Basada en procesos\/hilos (un hilo por visita).<\/td><td>Basada en&nbsp;<strong>eventos<\/strong>&nbsp;(un solo proceso maneja miles de visitas).<\/td><\/tr><tr><td><strong>Consumo RAM<\/strong><\/td><td>Alto (crece con cada visita).<\/td><td>Muy bajo y estable.<\/td><\/tr><tr><td><strong>Contenido Est\u00e1tico<\/strong><\/td><td>Bueno.<\/td><td><strong>Excelente<\/strong>&nbsp;(est\u00e1 optimizado para archivos HTML\/im\u00e1genes).<\/td><\/tr><tr><td><strong>Contenido Din\u00e1mico<\/strong><\/td><td>Puede procesar PHP\/Python internamente (mod_php).<\/td><td>Necesita un gestor externo (como&nbsp;<strong>PHP-FPM<\/strong>).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>4. \u00bfQu\u00e9 tiene Nginx que le falta a Apache?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Proxy Inverso Nativo:<\/strong>\u00a0Nginx fue dise\u00f1ado desde el primer d\u00eda para ser un \u00abescudo\u00bb o intermediario. Es mucho m\u00e1s f\u00e1cil configurar Nginx para que pase tr\u00e1fico a tus contenedores Docker que hacerlo en Apache.<\/li>\n\n\n\n<li><strong>Carga de Configuraci\u00f3n sin cortes:<\/strong>\u00a0El comando\u00a0<code>nginx -s reload<\/code>\u00a0es extremadamente robusto; Nginx levanta procesos nuevos con la nueva configuraci\u00f3n y va cerrando los viejos solo cuando terminan de atender a los usuarios, sin perder ni un solo paquete.<\/li>\n<\/ul>\n\n\n\n<p>5. \u00bfQu\u00e9 tiene Apache que le falta a Nginx?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Flexibilidad en Hosting Compartido:<\/strong>\u00a0Gracias al\u00a0<code>.htaccess<\/code>, Apache es el rey donde muchos usuarios comparten un servidor, porque cada uno puede configurar su propia web sin ser administrador.<\/li>\n\n\n\n<li><strong>Carga de m\u00f3dulos din\u00e1mica:<\/strong>\u00a0Puedes cargar y descargar m\u00f3dulos de Apache sin reiniciar el proceso principal (aunque Nginx ha mejorado mucho en esto en versiones recientes de 2026).<\/li>\n<\/ul>\n\n\n\n<p><strong>En resumen:<\/strong>&nbsp;Usas Nginx en tu servidor de DigitalOcean porque, al ser un VPS con recursos limitados, Nginx te permite exprimir al m\u00e1ximo la RAM y procesar tus p\u00e1ginas de calculadora y ejemplo mucho m\u00e1s r\u00e1pido que Apache.<\/p>\n\n\n\n<p>Como Nginx no usa archivos&nbsp;<code>.htaccess<\/code>, todas las reglas que antes pon\u00edas en carpetas locales ahora deben vivir centralizadas en tu bloque&nbsp;<code>server {}<\/code>&nbsp;dentro de&nbsp;<code>\/etc\/nginx\/sites-available\/<\/code>.<\/p>\n\n\n\n<p>Aqu\u00ed tienes c\u00f3mo traducir las reglas m\u00e1s comunes de Apache a la sintaxis de Nginx para 2026:<\/p>\n\n\n\n<p>1. Redirecciones simples (301 Redirect)<\/p>\n\n\n\n<p>Si quieres que cuando alguien entre a una p\u00e1gina vieja sea enviado a una nueva.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache (<code>.htaccess<\/code>):<\/strong>apache<code>Redirect 301 \/vieja-calculadora.html \/nueva-calculadora.html <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n\n\n\n<li><strong>En Nginx (Archivo de configuraci\u00f3n):<\/strong>nginx<code>location \/vieja-calculadora.html { return 301 \/nueva-calculadora.html; } <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p>2. Forzar HTTPS (Muy com\u00fan)<\/p>\n\n\n\n<p>Aunque ahora usas IP, si alg\u00fan d\u00eda tienes dominio, esta es la regla estrella.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache:<\/strong>apache<code>RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301] <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n\n\n\n<li><strong>En Nginx:<\/strong>nginx<code>server { listen 80; server_name _; return 301 https:\/\/$host$request_uri; } <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p>3. URLs Amigables (Quitar el&nbsp;<code>.html<\/code>&nbsp;o&nbsp;<code>.php<\/code>)<\/p>\n\n\n\n<p>Si quieres que tu web de ejemplo se vea como&nbsp;<code>tu_ip\/ejemplo<\/code>&nbsp;en lugar de&nbsp;<code>tu_ip\/ejemplo.html<\/code>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache:<\/strong>apache<code>RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\\.]+)$ $1.html [NC,L] <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n\n\n\n<li><strong>En Nginx:<\/strong>nginx<code>location \/ { try_files $uri $uri.html $uri\/ =404; } <\/code>Usa el c\u00f3digo con precauci\u00f3n.<em>Aqu\u00ed Nginx intenta buscar el archivo tal cual, luego le a\u00f1ade .html, luego busca una carpeta, y si nada funciona, da error 404.<\/em><\/li>\n<\/ul>\n\n\n\n<p>4. Proteger una carpeta con contrase\u00f1a<\/p>\n\n\n\n<p>Si quieres que al entrar a&nbsp;<code>tu_ip:8080\/privado<\/code>&nbsp;pida usuario y clave.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache:<\/strong>\u00a0Usas archivos\u00a0<code>.htpasswd<\/code>\u00a0y directivas\u00a0<code>AuthType<\/code>.<\/li>\n\n\n\n<li><strong>En Nginx:<\/strong><ol><li>Creas el archivo de claves:\u00a0<code>sudo htpasswd -c \/etc\/nginx\/.htpasswd usuario<\/code>\u00a0(necesitas\u00a0<code>apache2-utils<\/code>\u00a0instalado para este comando).<\/li><li>En el bloque de Nginx:<\/li><\/ol>nginx<code>location \/privado { auth_basic \"\u00c1rea Restringida\"; auth_basic_user_file \/etc\/nginx\/.htpasswd; } <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p>5. Bloquear acceso a una IP espec\u00edfica<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>En Apache:<\/strong>\u00a0<code>Deny from 123.45.67.89<\/code><\/li>\n\n\n\n<li><strong>En Nginx:<\/strong>nginx<code>location \/ { deny 123.45.67.89; allow all; } <\/code>Usa el c\u00f3digo con precauci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p>\u00bfC\u00f3mo aplicar estos cambios?<\/p>\n\n\n\n<p>Recuerda que para que cualquier \u00abtraducci\u00f3n\u00bb funcione, debes seguir el flujo de seguridad:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Editar:\u00a0<code>sudo nano \/etc\/nginx\/sites-available\/default<\/code>\u00a0(o tu archivo espec\u00edfico).<\/li>\n\n\n\n<li>Probar:\u00a0<code>sudo nginx -t<\/code>\u00a0(Para verificar que la nueva regla es v\u00e1lida).<\/li>\n\n\n\n<li>Aplicar:\u00a0<code>sudo nginx -s reload<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>Otras Posibilidades con Nginx<\/strong><\/p>\n\n\n\n<p>Para eliminar la extensi\u00f3n&nbsp;<code>.html<\/code>&nbsp;de tus URLs en&nbsp;<strong>Nginx<\/strong>, utilizaremos la directiva&nbsp;<code>try_files<\/code>. Esto permite que, si alguien escribe&nbsp;<code>tu_ip:8080\/calculadora<\/code>, Nginx busque internamente el archivo&nbsp;<code>calculadora.html<\/code>&nbsp;sin que el usuario vea la extensi\u00f3n.<\/p>\n\n\n\n<p>Sigue estos pasos para configurarlo en tus archivos de&nbsp;<code>\/etc\/nginx\/sites-available\/<\/code>:<\/p>\n\n\n\n<p>1. Editar la configuraci\u00f3n del sitio<\/p>\n\n\n\n<p>Abre el archivo de configuraci\u00f3n que creaste para uno de tus sitios (por ejemplo, el de la calculadora):<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/nginx\/sites-available\/calculadora\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>2. Modificar el bloque&nbsp;<code>location \/<\/code><\/p>\n\n\n\n<p>Dentro del bloque&nbsp;<code>server<\/code>, debes actualizar la secci\u00f3n&nbsp;<code>location \/<\/code>. C\u00e1mbiala para que quede exactamente as\u00ed:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 8080;\n    server_name _;\n    root \/var\/www\/calculadora;\n    index index.html;\n\n    location \/ {\n        # 1. Busca el archivo exacto ($uri)\n        # 2. Si no existe, busca el archivo a\u00f1adiendo .html ($uri.html)\n        # 3. Si no existe, busca una carpeta con ese nombre ($uri\/)\n        # 4. Si nada coincide, devuelve error 404\n        try_files $uri $uri.html $uri\/ =404;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>3. Aplicar los cambios<\/p>\n\n\n\n<p>Como siempre en Nginx, debes validar y recargar:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Validar:<\/strong>\u00a0<code>sudo nginx -t<\/code><\/li>\n\n\n\n<li><strong>Recargar:<\/strong>\u00a0<code>sudo nginx -s reload<\/code><\/li>\n<\/ol>\n\n\n\n<p>4. \u00bfC\u00f3mo funciona ahora?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si en tu carpeta\u00a0<code>\/var\/www\/calculadora\/<\/code>\u00a0tienes un archivo llamado\u00a0<code>contacto.html<\/code>.<\/li>\n\n\n\n<li>Antes ten\u00edas que entrar a:\u00a0<code>http:\/\/TU_IP:8080\/contacto.html<\/code><\/li>\n\n\n\n<li><strong>Ahora<\/strong>\u00a0puedes entrar a:\u00a0<code>http:\/\/TU_IP:8080\/contacto<\/code><\/li>\n<\/ul>\n\n\n\n<p>Un detalle importante: Enlaces internos<\/p>\n\n\n\n<p>Ahora que las URLs son \u00ablimpias\u00bb, recuerda que en el c\u00f3digo de tus archivos HTML (en los men\u00fas o botones), deber\u00edas cambiar los enlaces.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mal:<\/strong>\u00a0<code>&lt;a href=\"calculadora.html\">Ir a calculadora&lt;\/a><\/code><\/li>\n\n\n\n<li><strong>Bien:<\/strong>\u00a0<code>&lt;a href=\"calculadora\">Ir a calculadora&lt;\/a><\/code><\/li>\n<\/ul>\n\n\n\n<p>Esto har\u00e1 que tu web se vea mucho m\u00e1s profesional y moderna en este 2026.<\/p>\n\n\n\n<p>Para implementar estas funciones en 2026, necesitamos a\u00f1adir reglas de \u00ablimpieza\u00bb en tu bloque de servidor. Nginx procesa estas reglas de arriba hacia abajo, por lo que el orden es importante.<\/p>\n\n\n\n<p>Aqu\u00ed tienes la configuraci\u00f3n completa para manejar archivos&nbsp;<strong>PHP<\/strong>&nbsp;sin extensi\u00f3n y la&nbsp;<strong>redirecci\u00f3n autom\u00e1tica<\/strong>&nbsp;de&nbsp;<code>.html<\/code>:<\/p>\n\n\n\n<p>1. Configuraci\u00f3n de Nginx para PHP y URLs Limpias<\/p>\n\n\n\n<p>Primero, abre tu archivo de configuraci\u00f3n:<br><code>sudo nano \/etc\/nginx\/sites-available\/default<\/code>&nbsp;(o el nombre de tu archivo).<\/p>\n\n\n\n<p>Pega o adapta este bloque:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name _;\n    root \/var\/www\/html;\n    index index.php index.html;\n\n    # 1. REDIRECCI\u00d3N AUTOM\u00c1TICA: Quitar .html de la barra de direcciones\n    if ($request_uri ~ ^\/(.*)\\.html$) {\n        return 301 \/$1;\n    }\n\n    # 2. REDIRECCI\u00d3N AUTOM\u00c1TICA: Quitar .php de la barra de direcciones\n    if ($request_uri ~ ^\/(.*)\\.php$) {\n        return 301 \/$1;\n    }\n\n    location \/ {\n        # 3. INTENTAR CARGAR: archivo, luego .html, luego .php, luego carpeta\n        try_files $uri $uri.html $uri.php $uri\/ =404;\n    }\n\n    # 4. PROCESAMIENTO DE PHP: Necesario para que el servidor entienda el c\u00f3digo PHP\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        # Aseg\u00farate de que la versi\u00f3n de php-fpm sea la que tienes instalada (ej. 8.1, 8.3)\n        fastcgi_pass unix:\/var\/run\/php\/php-fpm.sock;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>2. Requisito para PHP<\/p>\n\n\n\n<p>Para que la parte de PHP funcione, debes tener instalado el procesador de PHP en tu servidor de DigitalOcean. Si no lo tienes, inst\u00e1lalo con:<br><code>sudo apt update &amp;&amp; sudo apt install php-fpm -y<\/code><\/p>\n\n\n\n<p>3. Explicaci\u00f3n de lo que acabamos de hacer:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>La Redirecci\u00f3n (<code>if<\/code>):<\/strong>\u00a0Si un usuario escribe manualmente\u00a0<code>index.html<\/code>\u00a0o\u00a0<code>contacto.php<\/code>, Nginx le env\u00eda una se\u00f1al (301) para que su navegador cambie la URL a\u00a0<code>index<\/code>\u00a0o\u00a0<code>contacto<\/code>. Esto evita el contenido duplicado y mantiene la barra de direcciones limpia.<\/li>\n\n\n\n<li><strong><code>try_files<\/code>:<\/strong>\u00a0Es el \u00abdetective\u00bb. Si pides\u00a0<code>\/contacto<\/code>, busca primero si existe un archivo literal, luego busca\u00a0<code>contacto.html<\/code>, luego\u00a0<code>contacto.php<\/code>.<\/li>\n\n\n\n<li><strong><code>fastcgi_pass<\/code>:<\/strong>\u00a0Es el puente. Nginx no sabe leer PHP por s\u00ed mismo, as\u00ed que le pasa el archivo al servicio\u00a0<code>php-fpm<\/code>\u00a0para que lo ejecute y le devuelva el resultado en HTML.<\/li>\n<\/ul>\n\n\n\n<p>4. Aplicar cambios<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Verificar:<\/strong>\u00a0<code>sudo nginx -t<\/code><\/li>\n\n\n\n<li><strong>Recargar:<\/strong>\u00a0<code>sudo nginx -s reload<\/code><\/li>\n\n\n\n<li><strong>Reiniciar PHP (opcional):<\/strong>\u00a0<code>sudo systemctl restart php*-fpm<\/code><\/li>\n<\/ol>\n\n\n\n<p>Prueba de fuego<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crea un archivo de prueba:\u00a0<code>echo \"&lt;?php phpinfo(); ?>\" | sudo tee \/var\/www\/html\/info.php<\/code><\/li>\n\n\n\n<li>Entra en tu navegador a:\u00a0<code>http:\/\/TU_IP\/info<\/code>\u00a0(sin el .php).<\/li>\n\n\n\n<li>Si ves la informaci\u00f3n de PHP, \u00a1est\u00e1 funcionando perfectamente!<\/li>\n<\/ul>\n\n\n\n<p><strong>Pagina de Error<\/strong><\/p>\n\n\n\n<p>Crear una p\u00e1gina de&nbsp;<strong>Error 404 personalizada<\/strong>&nbsp;en 2026 es el toque final para que tu servidor se vea profesional, incluso cuando algo sale mal.<\/p>\n\n\n\n<p>Sigue estos pasos para configurar tu propio dise\u00f1o:<\/p>\n\n\n\n<p>1. Crear tu archivo de error personalizado<\/p>\n\n\n\n<p>Primero, crea el archivo HTML que ver\u00e1n los usuarios. Puedes hacerlo en la carpeta ra\u00edz de tu sitio:<br><code>sudo nano \/var\/www\/html\/error404.html<\/code><\/p>\n\n\n\n<p>Pega un dise\u00f1o simple como este (puedes editarlo despu\u00e9s con CSS):<\/p>\n\n\n\n<p>html<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"es\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;P\u00e1gina no encontrada - 404&lt;\/title&gt;\n    &lt;style&gt;\n        body { text-align: center; font-family: sans-serif; padding: 50px; background: #f4f4f4; }\n        h1 { color: #ff5722; font-size: 50px; }\n        p { font-size: 20px; color: #666; }\n        a { color: #007bff; text-decoration: none; border: 1px solid #007bff; padding: 10px; border-radius: 5px; }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;\u00a1Vaya! Error 404&lt;\/h1&gt;\n    &lt;p&gt;La p\u00e1gina que buscas no existe en este servidor.&lt;\/p&gt;\n    &lt;br&gt;&lt;br&gt;\n    &lt;a href=\"\/\"&gt;Volver al Inicio&lt;\/a&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>2. Configurar Nginx para usar ese archivo<\/p>\n\n\n\n<p>Ahora debes decirle a Nginx que, cuando ocurra un error 404, use ese archivo espec\u00edfico. Abre tu archivo de configuraci\u00f3n:<br><code>sudo nano \/etc\/nginx\/sites-available\/default<\/code><\/p>\n\n\n\n<p>Dentro del bloque&nbsp;<code>server { ... }<\/code>, a\u00f1ade estas dos l\u00edneas:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name _;\n    \n    # ... otras configuraciones que ya tenemos ...\n\n    # Definir el archivo para el error 404\n    error_page 404 \/error404.html;\n\n    # Asegurar que Nginx no intente buscar el archivo de error en otro lado\n    location = \/error404.html {\n        root \/var\/www\/html;\n        internal; # Esto hace que la p\u00e1gina solo sea accesible internamente por errores\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>3. Aplicar y Probar<\/p>\n\n\n\n<p>Como siempre, valida y recarga Nginx:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>sudo nginx -t<\/code><\/li>\n\n\n\n<li><code>sudo nginx -s reload<\/code><\/li>\n<\/ol>\n\n\n\n<p><strong>Para probarlo:<\/strong>&nbsp;Entra en tu navegador y escribe una ruta que sepas que no existe, por ejemplo:&nbsp;<code>http:\/\/TU_IP\/esta-pagina-no-existe<\/code>. Deber\u00edas ver tu nuevo dise\u00f1o naranja.<\/p>\n\n\n\n<p>Un truco extra para 2026: Errores 50x<\/p>\n\n\n\n<p>Si quieres cubrir tambi\u00e9n los errores de servidor (cuando PHP falla o el servidor est\u00e1 sobrecargado), puedes a\u00f1adir:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>error_page 500 502 503 504 \/error50x.html;\nlocation = \/error50x.html {\n    root \/var\/www\/html;\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>Para monitorizar si tienes muchos errores 404 (lo cual indicar\u00eda enlaces rotos en tu web), puedes usar el comando:&nbsp;<code>tail -f \/var\/log\/nginx\/access.log | grep 404<\/code>.<\/p>\n\n\n\n<p>Adem\u00e1s de personalizar las p\u00e1ginas de error, existen otras configuraciones \u00fatiles en Nginx. Por ejemplo, puedes configurar la compresi\u00f3n Gzip para acelerar la carga de tu sitio web o establecer encabezados de cach\u00e9 adecuados para mejorar el rendimiento.<\/p>\n\n\n\n<p>Para configurar la compresi\u00f3n Gzip, a\u00f1ade lo siguiente dentro del bloque&nbsp;<code>http { ... }<\/code>&nbsp;o&nbsp;<code>server { ... }<\/code>&nbsp;de tu archivo de configuraci\u00f3n de Nginx:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gzip on;\ngzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>Para configurar encabezados de cach\u00e9, puedes usar algo como esto dentro de un bloque&nbsp;<code>location { ... }<\/code>&nbsp;espec\u00edfico para archivos est\u00e1ticos:<\/p>\n\n\n\n<p>nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location ~* \\.(jpg|jpeg|gif|png|css|js|ico|xml)$ {\n    expires 30d;\n    access_log off;\n}\n<\/code><\/pre>\n\n\n\n<p>Usa el c\u00f3digo con precauci\u00f3n.<\/p>\n\n\n\n<p>Despu\u00e9s de realizar cualquier cambio, recuerda validar y recargar Nginx con&nbsp;<code>sudo nginx -t<\/code>&nbsp;y&nbsp;<code>sudo nginx -s reload<\/code>. Estas son solo algunas ideas; Nginx ofrece muchas otras opciones para optimizar el rendimiento y la seguridad de tu servidor web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para entender&nbsp;Nginx&nbsp;(pronunciado \u00abEngine-X\u00bb),&nbsp;piensa en \u00e9l no solo como un servidor de archivos, sino como un&nbsp;sem\u00e1foro inteligente&nbsp;para el tr\u00e1fico de internet. Su \u00e9xito radica en que no abre un proceso pesado por cada visita (como hac\u00eda el antiguo Apache), sino que maneja miles de conexiones simult\u00e1neas usando muy pocos recursos. [1][3] Aqu\u00ed tienes los conceptos clave&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[61,62],"tags":[398,250,280],"class_list":["post-532","post","type-post","status-publish","format-standard","hentry","category-https-cienciaytecnology-com-wordpress-categoria-linux","category-servidores","tag-dominio","tag-nginx","tag-servidor"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NGINX - Ciencia y Tecnologia<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NGINX - Ciencia y Tecnologia\" \/>\n<meta property=\"og:description\" content=\"Para entender&nbsp;Nginx&nbsp;(pronunciado \u00abEngine-X\u00bb),&nbsp;piensa en \u00e9l no solo como un servidor de archivos, sino como un&nbsp;sem\u00e1foro inteligente&nbsp;para el tr\u00e1fico de internet. Su \u00e9xito radica en que no abre un proceso pesado por cada visita (como hac\u00eda el antiguo Apache), sino que maneja miles de conexiones simult\u00e1neas usando muy pocos recursos. [1][3] Aqu\u00ed tienes los conceptos clave...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/\" \/>\n<meta property=\"og:site_name\" content=\"Ciencia y Tecnologia\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-15T14:44:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-15T14:44:10+00:00\" \/>\n<meta name=\"author\" content=\"david\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"david\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/\"},\"author\":{\"name\":\"david\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"headline\":\"NGINX\",\"datePublished\":\"2026-01-15T14:44:09+00:00\",\"dateModified\":\"2026-01-15T14:44:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/\"},\"wordCount\":2881,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"keywords\":[\"dominio\",\"nginx\",\"servidor\"],\"articleSection\":[\"Linux\",\"Servidores\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/\",\"name\":\"NGINX - Ciencia y Tecnologia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2026-01-15T14:44:09+00:00\",\"dateModified\":\"2026-01-15T14:44:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/nginx\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NGINX\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/\",\"name\":\"Ciencia y Tecnologia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b76777e3c0d2d08ea263068461c90d4b\",\"name\":\"david\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/a-person-programming-with-a-computer-screen-and-code-visible.jpg\",\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/a-person-programming-with-a-computer-screen-and-code-visible.jpg\",\"contentUrl\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/a-person-programming-with-a-computer-screen-and-code-visible.jpg\",\"width\":1024,\"height\":1024,\"caption\":\"david\"},\"logo\":{\"@id\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/a-person-programming-with-a-computer-screen-and-code-visible.jpg\"},\"sameAs\":[\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\"],\"url\":\"https:\\\/\\\/cienciaytecnology.com\\\/wordpress\\\/author\\\/david\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NGINX - Ciencia y Tecnologia","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"NGINX - Ciencia y Tecnologia","og_description":"Para entender&nbsp;Nginx&nbsp;(pronunciado \u00abEngine-X\u00bb),&nbsp;piensa en \u00e9l no solo como un servidor de archivos, sino como un&nbsp;sem\u00e1foro inteligente&nbsp;para el tr\u00e1fico de internet. Su \u00e9xito radica en que no abre un proceso pesado por cada visita (como hac\u00eda el antiguo Apache), sino que maneja miles de conexiones simult\u00e1neas usando muy pocos recursos. [1][3] Aqu\u00ed tienes los conceptos clave...","og_url":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/","og_site_name":"Ciencia y Tecnologia","article_published_time":"2026-01-15T14:44:09+00:00","article_modified_time":"2026-01-15T14:44:10+00:00","author":"david","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"david","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/#article","isPartOf":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/"},"author":{"name":"david","@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"headline":"NGINX","datePublished":"2026-01-15T14:44:09+00:00","dateModified":"2026-01-15T14:44:10+00:00","mainEntityOfPage":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/"},"wordCount":2881,"commentCount":0,"publisher":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"keywords":["dominio","nginx","servidor"],"articleSection":["Linux","Servidores"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cienciaytecnology.com\/wordpress\/nginx\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/","url":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/","name":"NGINX - Ciencia y Tecnologia","isPartOf":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#website"},"datePublished":"2026-01-15T14:44:09+00:00","dateModified":"2026-01-15T14:44:10+00:00","breadcrumb":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cienciaytecnology.com\/wordpress\/nginx\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cienciaytecnology.com\/wordpress\/nginx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/cienciaytecnology.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"NGINX"}]},{"@type":"WebSite","@id":"https:\/\/cienciaytecnology.com\/wordpress\/#website","url":"https:\/\/cienciaytecnology.com\/wordpress\/","name":"Ciencia y Tecnologia","description":"","publisher":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cienciaytecnology.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/cienciaytecnology.com\/wordpress\/#\/schema\/person\/b76777e3c0d2d08ea263068461c90d4b","name":"david","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2024\/10\/a-person-programming-with-a-computer-screen-and-code-visible.jpg","url":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2024\/10\/a-person-programming-with-a-computer-screen-and-code-visible.jpg","contentUrl":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2024\/10\/a-person-programming-with-a-computer-screen-and-code-visible.jpg","width":1024,"height":1024,"caption":"david"},"logo":{"@id":"https:\/\/cienciaytecnology.com\/wordpress\/wp-content\/uploads\/2024\/10\/a-person-programming-with-a-computer-screen-and-code-visible.jpg"},"sameAs":["https:\/\/cienciaytecnology.com\/wordpress"],"url":"https:\/\/cienciaytecnology.com\/wordpress\/author\/david\/"}]}},"_links":{"self":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/comments?post=532"}],"version-history":[{"count":1,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/532\/revisions"}],"predecessor-version":[{"id":533,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/posts\/532\/revisions\/533"}],"wp:attachment":[{"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/media?parent=532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/categories?post=532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cienciaytecnology.com\/wordpress\/wp-json\/wp\/v2\/tags?post=532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}