- Configuración básica
- Virtual Hosts
- Módulos de Apache
Configuración Básica:Archivo de configuración principal
La configuración principal de Apache se realiza en diferentes archivos según el sistema:
Ubuntu/Debian: /etc/apache2/apache2.conf
# Configuración básica del servidor
ServerRoot /etc/apache2
PidFile ${APACHE_PID_FILE}
# Timeout y KeepAlive
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
# Configuración de procesos
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxRequestWorkers 256
MaxConnectionsPerChild 0
</IfModule>
# Incluir otras configuraciones
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
CentOS/RHEL: /etc/httpd/conf/httpd.conf
# Configuración básica del servidor
ServerRoot "/etc/httpd"
Listen 80
# Usuario y grupo
User apache
Group apache
# Configuración de directorio
<Directory />
AllowOverride none
Require all denied
</Directory>
# Document Root
DocumentRoot "/var/www/html"
<Directory "/var/www">
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Incluir configuraciones adicionales
IncludeOptional conf.d/*.conf
Windows: C:\Apache24\conf\httpd.conf
# Configuración básica del servidor
Define SRVROOT "C:/Apache24"
ServerRoot "${SRVROOT}"
Listen 80
# Configuración de directorio principal
<Directory />
AllowOverride none
Require all denied
</Directory>
# Document Root
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
# Incluir configuraciones adicionales
Include conf/extra/httpd-vhosts.conf
Configuraciones básicas importantes
Configurar ServerName
# Evitar warnings al iniciar Apache
ServerName localhost:80
Configurar DirectoryIndex
# Archivos que se buscan por defecto en un directorio
<IfModule dir_module>
DirectoryIndex index.html index.php index.htm
</IfModule>
Configurar tipos MIME
# Incluir tipos MIME
TypesConfig conf/mime.types
# Tipo por defecto
DefaultType text/plain
Virtual Hosts
Los Virtual Hosts permiten alojar múltiples sitios web en un solo servidor Apache.
Tipos de Virtual Hosts
- Name-based: Múltiples nombres de dominio en una IP
- IP-based: Diferentes IPs para cada sitio
- Port-based: Diferentes puertos para cada sitio
Virtual Hosts en Ubuntu/Debian
Crear un Virtual Host
# Crear directorio para el sitio
sudo mkdir -p /var/www/midominio.com/public_html
# Asignar permisos
sudo chown -R www-data:www-data /var/www/midominio.com/public_html
sudo chmod -R 755 /var/www/midominio.com
Crear archivo de configuración
sudo nano /etc/apache2/sites-available/midominio.com.conf
<VirtualHost *:80>
ServerName midominio.com
ServerAlias www.midominio.com
DocumentRoot /var/www/midominio.com/public_html
<Directory /var/www/midominio.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/midominio.com_error.log
CustomLog ${APACHE_LOG_DIR}/midominio.com_access.log combined
# Configuración adicional para desarrollo
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
</VirtualHost>
Habilitar el sitio
# Habilitar el sitio
sudo a2ensite midominio.com.conf
# Deshabilitar sitio por defecto (opcional)
sudo a2dissite 000-default.conf
# Verificar configuración
sudo apache2ctl configtest
# Reiniciar Apache
sudo systemctl restart apache2
Virtual Hosts en CentOS/RHEL: Crear directorio y permisos
sudo mkdir -p /var/www/midominio.com/public_html
sudo chown -R apache:apache /var/www/midominio.com/public_html
sudo chmod -R 755 /var/www/midominio.com
Crear archivo de configuración
sudo nano /etc/httpd/conf.d/midominio.com.conf
<VirtualHost *:80>
ServerName midominio.com
ServerAlias www.midominio.com
DocumentRoot /var/www/midominio.com/public_html
<Directory /var/www/midominio.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/midominio.com_error.log
CustomLog /var/log/httpd/midominio.com_access.log combined
</VirtualHost>
Reiniciar Apache
sudo systemctl restart httpd
Virtual Hosts en Windows
Configurar Virtual Host
Editar C:\Apache24\conf\extra\httpd-vhosts.conf
:
<VirtualHost *:80>
DocumentRoot "C:/Apache24/htdocs/midominio.com"
ServerName midominio.com
ServerAlias www.midominio.com
<Directory "C:/Apache24/htdocs/midominio.com">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/midominio.com-error.log"
CustomLog "logs/midominio.com-access.log" common
</VirtualHost>
Habilitar Virtual Hosts
En el archivo principal httpd.conf
, descomentar:
Include conf/extra/httpd-vhosts.conf
Configurar archivo hosts (para desarrollo)
Linux/macOS
sudo nano /etc/hosts
Windows
C:\Windows\System32\drivers\etc\hosts
Agregar línea:
127.0.0.1 midominio.com www.midominio.com
Módulos de Apache
Los módulos extienden la funcionalidad de Apache. Estos son algunos de los mas comunes. Recuerda que son dos pasos: tener el módulo (que puede venir preinstalado o tendrás que descargar) y activarlo.
Módulo | Función |
---|---|
mod_rewrite | Reescritura de URLs |
mod_ssl | Soporte SSL/TLS |
mod_headers | Manipulación de headers HTTP |
mod_deflate | Compresión de contenido |
mod_expires | Control de caché |
mod_security | Firewall de aplicaciones web |
Gestión de módulos en Ubuntu/Debian
# Ver módulos disponibles
ls /etc/apache2/mods-available/
# Ver módulos habilitados
ls /etc/apache2/mods-enabled/
# Habilitar módulo
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod deflate
# Deshabilitar módulo
sudo a2dismod autoindex
# Reiniciar Apache después de cambios
sudo systemctl restart apache2
Gestión de módulos en CentOS/RHEL
Los módulos se configuran editando archivos en /etc/httpd/conf.modules.d/
:
# Ver módulos cargados
httpd -M
# Habilitar módulo mod_rewrite
sudo nano /etc/httpd/conf.modules.d/00-base.conf
Descomentar o agregar:
LoadModule rewrite_module modules/mod_rewrite.so
Gestión de módulos en Windows
Editar httpd.conf
y descomentar o agregar:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule headers_module modules/mod_headers.so
Configuración de mod_rewrite
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# Habilitar mod_rewrite
RewriteEngine On
# Ejemplo: Redireccionar www a no-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</Directory>
Configuración de mod_headers
<IfModule mod_headers.c>
# Agregar header de seguridad
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
# HSTS (solo para HTTPS)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>