Servidores y VPS

Cómo configurar Apache en un VPS: tutorial completo

Aprende a configurar Apache en un VPS Linux paso a paso: instalación, VirtualHosts, módulos esenciales y ajustes de seguridad básicos.

Closeup of many cables with blue wires plugged in modern switch with similar adapters on blurred background in modern studio

Configurar Apache en un VPS consiste en instalar el servidor web, crear un VirtualHost por sitio, activar los módulos necesarios y aplicar ajustes básicos de seguridad — todo en menos de una hora desde una terminal SSH.

Apache es el servidor web más usado del mundo y la opción por defecto en la gran mayoría de los stacks LAMP en México. Su flexibilidad para manejar múltiples sitios, su integración con .htaccess y su ecosistema maduro de módulos lo hacen ideal tanto para proyectos pequeños como para aplicaciones de mediana escala.

Paso 1 — Instalar Apache en Ubuntu/Debian

Actualiza los repositorios e instala Apache con un solo comando:

sudo apt update
sudo apt install apache2 -y

Habilita el servicio para que inicie automáticamente con el sistema:

sudo systemctl enable apache2
sudo systemctl start apache2

Verifica que Apache esté corriendo:

sudo systemctl status apache2

Abre un navegador y escribe la IP de tu VPS — deberías ver la página de bienvenida de Apache. Si no la ves, revisa que el puerto 80 esté abierto en el firewall de tu proveedor.

Paso 2 — Configurar VirtualHosts (un dominio por sitio)

Los VirtualHosts permiten que un solo servidor Apache aloje múltiples sitios web con dominios diferentes. Cada sitio tiene su propio archivo de configuración en /etc/apache2/sites-available/.

Crear la estructura de directorios

sudo mkdir -p /var/www/tusitio.com/public_html
sudo chown -R $USER:www-data /var/www/tusitio.com
sudo chmod -R 755 /var/www/tusitio.com

Crear el archivo de configuración del VirtualHost

sudo nano /etc/apache2/sites-available/tusitio.com.conf

Pega el siguiente bloque y ajusta el dominio y la ruta:

<VirtualHost *:80>
    ServerName tusitio.com
    ServerAlias www.tusitio.com
    DocumentRoot /var/www/tusitio.com/public_html
    ServerAdmin [email protected]

    <Directory /var/www/tusitio.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/tusitio-error.log
    CustomLog ${APACHE_LOG_DIR}/tusitio-access.log combined
</VirtualHost>

La opción Options -Indexes es importante: impide que Apache liste el contenido del directorio cuando no existe un archivo index, lo que evita exponer archivos internos accidentalmente.

Activar el sitio y recargar Apache

sudo a2ensite tusitio.com.conf
sudo systemctl reload apache2

Para desactivar el sitio predeterminado que viene con Apache (evita que aparezca cuando se accede por IP):

sudo a2dissite 000-default.conf
sudo systemctl reload apache2

Paso 3 — Módulos esenciales de Apache

Apache funciona mediante módulos que puedes activar o desactivar según tus necesidades. Estos son los más importantes para un VPS de propósito general:

Módulo Para qué sirve Comando de activación
mod_rewrite URLs amigables / redirecciones (indispensable para WordPress, Laravel, etc.) sudo a2enmod rewrite
mod_ssl Soporte HTTPS sudo a2enmod ssl
mod_headers Cabeceras HTTP de seguridad (HSTS, CSP, X-Frame-Options) sudo a2enmod headers
mod_deflate Compresión gzip de respuestas sudo a2enmod deflate
mod_expires Caché de recursos estáticos en el cliente sudo a2enmod expires

Activa todos de una vez y recarga:

sudo a2enmod rewrite ssl headers deflate expires
sudo systemctl reload apache2

Para los sitios en la categoría de servidores VPS con PHP, también necesitarás libapache2-mod-php instalado como parte del stack LAMP.

Paso 4 — Ajustes de seguridad básicos

La instalación por defecto de Apache revela información sobre el servidor que un atacante puede aprovechar. Estos ajustes lo endurecen sin afectar el funcionamiento:

Ocultar la versión de Apache y el sistema operativo

sudo nano /etc/apache2/conf-available/security.conf

Busca y cambia estas dos líneas:

ServerTokens Prod
ServerSignature Off

Agregar cabeceras de seguridad

En el archivo de configuración de tu VirtualHost, dentro del bloque <VirtualHost>, agrega:

Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"

Deshabilitar la firma de directorios y el acceso al .htaccess desde la web

Ya cubriste Options -Indexes en el VirtualHost. Adicionalmente, en el archivo de seguridad global, confirma que esté deshabilitado el acceso a archivos .ht*:

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

Esto protege .htaccess y .htpasswd de ser leídos por un navegador.

Para un acompañamiento completo en la configuración y mantenimiento de tu servidor, el equipo de elenlace.com puede gestionar toda la infraestructura de tu VPS en México.

Conclusiones clave

  • Apache se instala en dos comandos en Ubuntu/Debian; el resto es configuración.
  • Un VirtualHost por dominio es la práctica estándar: mantiene los sitios aislados y organizados.
  • Options -Indexes y AllowOverride All son las dos directivas más críticas en la configuración de directorio.
  • Los módulos rewrite, ssl, headers, deflate y expires cubren el 90 % de los casos de uso típicos.
  • Ocultar ServerTokens y agregar cabeceras de seguridad son los primeros pasos de hardening que no deben omitirse.

¿Quieres un servidor Apache listo para producción sin preocuparte por la configuración? Contáctanos en elenlace.com — configuramos y aseguramos tu VPS para que tú te concentres en tu negocio.

Preguntas frecuentes

¿Cómo verifico que la configuración de Apache no tiene errores antes de recargar?

Usa el comando sudo apachectl configtest o sudo apache2ctl -t. Si la sintaxis es correcta, responde Syntax OK. Si hay un error, indica el archivo y la línea exacta. Siempre corre este comando antes de hacer systemctl reload apache2.

¿Cuál es la diferencia entre systemctl reload y systemctl restart en Apache?

reload recarga la configuración sin interrumpir las conexiones activas — es lo que debes usar en producción. restart detiene y vuelve a arrancar el proceso completo, lo que corta brevemente las conexiones existentes. Solo usa restart cuando instalas un módulo nuevo que requiere reinicio completo.

¿Puedo alojar varios dominios en un mismo VPS con Apache?

Sí, ese es exactamente el propósito de los VirtualHosts. No hay un límite técnico estricto; el límite real lo imponen los recursos del servidor (RAM, CPU). En un VPS de 2 GB de RAM con sitios de tráfico moderado, es común alojar entre 5 y 15 dominios sin problemas.

¿Qué diferencia hay entre a2ensite y editar directamente apache2.conf?

a2ensite simplemente crea un enlace simbólico desde sites-available/ hacia sites-enabled/, que es lo que Apache realmente lee al iniciarse. Es la forma estándar en sistemas Debian/Ubuntu porque mantiene los archivos organizados y hace que activar/desactivar sitios sea reversible con un solo comando.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos