You are on page 1of 11

Directivas básicas de configuración de Apache 2

El archivo principal de configuración de Apache es el httpd.conf. Este archivo está


comentado y se autoexplica en cada sección, por lo que la primera ayuda ante cualquier
duda se puede conseguir en este mismo archivo. En httpd.conf se encuentran las
directivas de configuración, las cuales son las opciones de configuración de Apache.

Hay que tener en cuenta que las directivas por defecto ya se acomodan a multitud de
máquinas, y sólo es necesario que se cambien algunas en determinadas situaciones.

El fichero httpd.conf debemos conocerlo y manejarlo. Este archivo se puede entender


según como se configuren cada una de sus directivas.

httpd.conf consta de muchas directivas; para poder tenerlas de manera ordenada el


mismo fichero se divide en 3 secciones:

 Section1: Global Environment

Reúne los aspectos globales del servidor. Por ejemplo el número máximo de clientes
concurrentes, los timeouts, el directorio raíz del servidor, etc.

 Section2: Main Server Configuration

Agrupa las directivas que definen la forma de responder a todos los pedidos del servidor
principal, o sea aquellos que no son para los hosts virtuales, de existir alguno definido.
También reúne los aspectos por defecto de todos los hosts virtuales que se configuren
más adelante.

 Section3: Virtual Hosts

Agrupa las directivas relacionadas con los hosts virtuales que se definan.

Global Environment
Las directivas que se muestran en esta sección crean el entorno global para el servidor
Apache. Este rige el funcionamiento general de Apache, como puede ser el número de
peticiones concurrentes que se pueden manejar, la ubicación de los ficheros de
configuración, etc.

ServerType { standalone | inetd }

Permite indicar el tipo de servidor a ejecutar. Este puede ser:

 inetd: el servicio se brindará como un servicio tipo xinet. Se deberá definir su


configuración en el directorio xinetd.d. De esta forma se iniciará una copia del
servidor cada vez que algún cliente trate de conectarse y esta terminará una vez
que retorne lo pedido. Aunque se considera más seguro, debe evitarse este
modo, porque puede que no trabaje adecuadamente.
 standalone: el servidor se ejecutará como un servicio independiente. Es la forma
más eficiente y la que se asume por defecto.
ServerRoot

Esta directiva define el directorio donde se ubica toda la información de configuración y


registro que necesita el servidor para su correcto funcionamiento, como por ejemplo
srm.conf, httpd.conf, acces.conf, mymes.type, etc. La ubicación que se indique aquí
debe ser una ruta absoluta, lo que significa que debemos indicar la ubicación del
directorio partiendo desde la raíz. Ejemplos:

ServerRoot /etc/apache
ServerRoot /usr/local/apache

PidFile

La directiva PidFile especifica la ruta del archivo PID (proceso ID). Por defecto está
fijada en logs/httpd.pid. Ejemplos:

PidFile /var/run/apache.pid
PidFile /usr/local/apache/logs/httpd.pid

ScoreBoardFile

Fichero utilizado para almacenar información interna del proceso servidor. Se requiere
para algunas arquitecturas para comunicar entre los procesos hijos y el padre. No es
necesario en todas las arquitecturas. Por ejemplo:

ScoreBoardFile /var/run/apache.scoreboard

Si queremos saber si lo es para nuestra arquitectura, deberemos arrancar Apache con


esta directiva inicializada y comprobar que se ha creado el archivo.

Timeout

Timeout define, en segundos, el tiempo que el servidor esperará para recibir y enviar
peticiones durante la comunicación, tras los cuales el servidor cierra la conexión. Está
configurado por defecto a 300, lo cual es apropiado para la mayoría de las situaciones.
Ejemplo:

Timeout 300

KeepAlive

Esta directiva se utiliza para indicar si se activarán las conexiones persistentes; es decir.
el poder hacer más de una petición por conexión.

Por ejemplo, supongamos que hacemos una petición al servidor de una página web que
contiene tres imágenes, entonces tendremos que hacer 4 peticiones, una para la página y
una por cada imagen. El tener activadas las conexiones persistentes nos permite el poder
hacer todas las peticiones a través de la misma conexión, y no tener que negociar nuevas
conexiones. La respuesta del servidor será más rápida y tendremos un mejor
rendimiento.
Esta directiva admite dos opciones:

KeepAlive On
KeepAlive Off

Si KeepAlive esta en On, también deberá establecer KeepAliveTimeout en un valor


bajo y controlar el registro de errores (error_log) de los servidores para estar advertido
si no dispone de suficientes procesos hijo para gestionar las peticiones.

MaxKeepAliveRequests

Esta directiva establece el máximo número de peticiones que se pueden realizar en una
conexión persistente. Las conexiones persistentes tienen que estar activadas,
obviamente. Hay que tener en cuenta el ancho de banda de salida de nuestro servidor,
por el cual deberá ser enviada toda la información. Si se establece un valor muy grande
respecto al ancho de banda, el tiempo de respuesta se verá incrementado para cada
usuario. El valor predeterminado de la directiva MaxKeepAliveRequests es de 100, que
debería bastar en la mayoría de los casos.

MaxKeepAliveRequests 100

KeepAliveTimeout

La directiva KeepAliveTimeout establece el número de segundos que el servidor


esperará a la siguiente petición, tras haber dado servicio a una, antes de cerrar la
conexión. Una vez recibida la petición, aplica la directiva Timeout en su lugar.

KeepAliveTimeout 15

Listen

Esta directiva permite especificar qué puerto se utilizará para atender las peticiones. Por
defecto se utiliza el puerto 80 (www). Sintaxis: Listen [dirección ip:] Numero de puerto.
Ejemplo:

Para hacer que el servidor acepte conexiones en los puertos 80 y 8080

Listen 80
Listen 8080

Para atender dos direcciones IP distintas, con distintos puertos, se utilizará:

Listen 192.168.255.5:80
Listen 192.168.255.8:8080

LoadModule

Directiva que sirve para cargar módulos que incluyen distintas funcionalidades.
Sintaxis: LoadModule nombreModulo ubicacionFichero
MaxClients

Permite especificar la cantidad máxima de clientes conectados simultáneamente al


servidor. Por defecto es 150. Ejemplo:

MaxClients 200

MaxRequestsPerChild

Indica la cantidad de pedidos que puede atender un proceso servidor por hijo antes de
que muera. Si se especifica cero el número será ilimitado. Poner límites a este número
permite liberar la memoria asociada al proceso, en caso de que ésta se acumule
accidentalmente, además de disminuir el número de procesos activos, cuando la carga
del servidor disminuye.

Por defecto es 100. Este valor no incluye la cantidad de los pedidos en una conexión
persistente, los cuales se cuentan como uno sólo. Sintaxis: MaxRequestsPerChild
cantidad. Ejemplo

MaxRequestsPerChild 80

Main Server Configuration


Esta es la sección principal de configuración del servidor. En ella podemos encontrar las
siguientes directivas:

ServerAdmin

Especifica la dirección de correo electrónico del administrador. Esta dirección aparece


en los mensajes de error, para permitir al usuario notificar un error al administrador.

ServerAdmin admin@sitioweb.com

ServerName

Especifica el nombre y el puerto que el servidor utiliza para identificarse, normalmente


se determina automáticamente, pero es recomendable especificarlo explícitamente para
que no haya problemas al iniciar el servidor. Si el servidor no tiene un nombre
registrado en las DNS, se recomienda poner su número IP. La sintaxis es: ServerName
direccionIP:Puerto Ejemplo:

ServerName localhost:80

DocumentRoot

La carpeta raíz que se ubica en el servidor, desde la que se servirán los documentos. Por
defecto, todas las peticiones tendrán como raíz esta carpeta. Esta es la carpeta donde
colocaremos las páginas que queramos publicar.
Si se cambia este directorio por otro, es muy importante que se ponga el nuevo valor, no
sólo en esta línea, sino también en la sección de la directiva Directory en la que se
establecen los parámetros de configuración de este directorio. Ejemplo:

/var/www/html

DirectoryIndex

Especifica el fichero por defecto que buscará en cada directorio en caso de que no se
especifique ninguno. Por defecto es index.html. Es decir, que si por ejemplo se pone en
el navegador

www.ciberaula.com

el servidor por defecto servirá

www.ciberaula.com/index.html

Sintaxis: DirectoryIndex fichero1 fichero2 fichero3

El orden con el que se especifica el nombre de fichero determinará la prioridad a la hora


de decidir que fichero es el que se muestra. Ejemplo:

DirectoryIndex index.html index.htm index.php

AccessFileName

Es el nombre del fichero de configuración de acceso limitado que se buscará en cada


una de los directorios del servidor para conocer la configuración del mismo. Este
fichero permite configurar el comportamiento de cada uno de los directorios
individualmente. Para que esta configuración funcione, la directiva AllowOverride tiene
que tener un valor que lo permita. El nombre de fichero que se especifica por defecto es
el del fichero .htaccess.

Como medida de seguridad, la configuración de Apache establece que no se muestre la


existencia de este fichero a ningún usuario, aunque esté establecida la opción de listado
de directorios. Si se decide cambiar el nombre, habrá que redefinir la seguridad para que
no se muestre el contenido del nuevo fichero. Esto se hace en el fichero httpd.conf en
una sección File como la que se presenta a continuación, en la que se establece que
todos los ficheros que comiencen por .ht no se mostrarán.

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

TypesConfig
Especifica el nombre del fichero que contiene la lista de tipos MIME que conoce el
servidor, y que determinará dependiendo de las extensiones para generar las cabeceras
http. No puede estar dentro de ninguna sección.

DefaultType

Tipo MIME que se servirá por defecto en caso de no conocer la extensión del fichero
que se está sirviendo. Por defecto, se indicará que se sirve texto plano, con el valor
text/plain. La directiva se puede encontrar fuera de cualquier sección, dentro de una
sección o dentro de un fichero .htaccess. Sintaxis: DefaultType tipoMime

HostnameLookups

Se utiliza en los ficheros de registro. Por defecto, cuando se produce un acceso se


guarda simplemente su número IP. Si esta directiva se encuentra en On, el servidor
buscará la correspondencia de ese número IP con su nombre y lo almacenará. Establecer
esta configuración en ON provocará que por lo menos se tenga que hacer una petición al
servidor de nombres por cada una de las peticiones de usuario, por lo que el rendimiento
de la máquina se puede ver decrementado. Esta directiva se puede encontrar dentro de
una sección o fuera de cualquier otra.

ErrorLog

Especifica la ubicación del fichero que contiene el registro de errores. Por defecto en la
carpeta logs. Esta directiva sólo se puede encontrar fuera de cualquier sección.

LogLevel

Especifica el tipo de mensajes que se guardarán en el fichero de registro de errores.


Dependiendo de los valores especificados, se guardarán mas o menos. Esta directiva
sólo se puede encontrar fuera de cualquier sección.

Valor de más a menos son: debug, info, notice, warn, error, crit, alert, emerg.

LogFormat

La directiva permite definir el formato que se utilizará para almacenar los registros. A
cada formato se le puede asignar un nombre, utilizándolo luego para crear distintos tipos
de ficheros de registro. Pueden existir varios LogFormat distintos. Sintaxis: LogFormat
configuraciónError nombre

CustomLog

La directiva se utiliza para especificar la ubicación y el tipo de formato que se utilizará


en un fichero de registro. Pueden existir varios ficheros de registro distintos con
configuraciones distintas. Para hacer esto, simplemente hay que poner varias líneas
customlog. Sintaxis: customLog fichero formato

ServerTokens
Esta directiva establece la información que se devuelve dentro de la cabecera http que
envía el servidor. Posibles valores de menor a mayor información son: Pord, Min, Os y
Full.

IndexOptions

Directiva usada para optar por el sistema de visualización del los directorio con Apache.
Puede ser normal o indexado. La configuración clásica es:

IndexOptions FancyIndexing

AddIconByEncoding

Esta directiva permite asociar un icono a un tipo MIME, de forma que cuando la
directiva FancyIndexing esté activada, se mostrará al lado del fichero el icono
correspondiente. Sintaxis: AddIconByEncoding icon MIME-encoding. Ejemplo:

AddIconByEncoding/icons/compressed.gif x-compress

AddIconByType

Esta directiva asocia un icono a un fichero dependiendo de un tipo MIME, de forma que
cuando la directiva FancyIndexing esté activada, se mostrará al lado del fichero el icono
correspondiente. Sintaxis: AddIconByType icon MIME-encoding. Ejemplo:

AddIconByType /icons/text.gif text/*

La diferencia entre AddIconByEncoding y AddIconByType reside en que mientras en la


primera se determina el tipo MIME basándose en la codificación del fichero,
AddIconByType determina el tipo MIME basándose en el nombre del fichero.

AddDescription

Esta directiva permite asociar una descripción a un tipo de fichero, que se mostrará al
listar un directorio. Sintaxis: AddDescripcion cadena fichero

AddDefaultCharset

Esta directiva define la codificación de caracteres que se utilizará de forma


predeterminada para los documentos. Por defecto viene establecido el valor ISO-8859-
1.

ErrorDocument

Esta directiva establece la configuración del servidor para cuando se produzca un error.
Se pueden establecer cuatro configuraciones distintas: Sacar un texto de error, Redirigir
a un fichero en el mismo directorio, Redirigir a un fichero en nuestro servidor y
Redirigir a un fichero fuera de nuestro servidor.
Hay que tener en cuenta que si el texto de error se envía a Internet Explorer, este tendrá
que tener al menos 512 Bytes, porque, si no, Internet Explorer mostrará su propia
página de error. Sintaxis: ErrorDocument NúmeroError Acción. Ejemplo:

ErrorDocument 404 /error404.html

En caso de no encontrarse un fichero, se mostrará el fichero error404.html

CacheRoot

Establece el directorio donde se encontrarán los ficheros de la caché de Apache.

CacheSize

Tamaño de la caché en Kilobytes.

CacheGcInterval

Establece cada cuántas horas se verificará el tamaño de los ficheros de la caché para
comprobar si se corresponden con el tamaño establecido dentro de CacheSize. El valor
acepta números flotantes, por lo que se pueden establecer los intervalos en minutos.
Cuanto mayor sea el valor de esta directiva, más posibilidades existirán de que se
sobrepase el valor establecido en CacheSize.

CacheMaxExpire

Máximo número de horas que los ficheros permanecerán dentro de la cache.

CacheLastModifiedFactor

Sirve para calcular la caducidad de un fichero en la cache, que será el de la hora de la


última modificación, multiplicado por este valor.

CacheDefaultExpire

Número de horas por defecto a partir de las cuales un fichero caduca. Se aplica en
aquellos casos en los que no se puede determinar la hora de creación del fichero.

Virtual Hosts (Hosts Virtuales)


Esta opción de Apache es muy útil en el caso de que contemos con más de un dominio
en nuestro host; es decir, hosts virtuales.

Por defecto, Apache únicamente sirve el host del sitio Web especificado en la directiva
ServerName. Es posible, sin embargo, hacer que Apache sirva a otros sitios Web
utilizando una directiva de un contenedor de hosts virtuales. Hay que tener en cuenta
que muchas de las directivas que hemos visto en la sección de Directivas básicas de
configuración también se pueden aplicar a hosts virtuales.
NameVirtualHost

Es necesario definir un número de IP y puerto para el host virtual. Para eso usamos esta
directiva.

Aunque addr puede ser el nombre del host, es recomendable que se utilice siempre una
dirección IP. Sintaxis: NameVirtualHost addr[:port]

Por ejemplo, para un host virtual llamado host.virtual.com que utilice la dirección
192.168.1.125, la directiva y la definición de su host virtual serán:

NameVirtualHost 192.168.1.125
<VirtualHost 192.168.1.125>
ServerName www.host.virtual.com
#Aquí ponemos otras directivas correspondientes a la directiva VirtualHost
</VirtualHost>

En el caso que se tenga varios host que tengan distintas direcciones, se tiene que repetir
esta directiva para cada dirección. Por ejemplo:

NameVirtualHost 192.168.1.20

<VirtualHost 192.168.1.20>
ServerName www.miempresa.com
#Otras de directivas
</VirtualHost>

<VirtualHost 192.168.1.20>
ServerName www.tuempresa.com
#Otras directivas
</VirtualHost>

NameVirtualHost 192.168.1.30

<VirtualHost 192.168.1.30>
ServerName www.micolegio.com
#Otras de directivas
</VirtualHost>

<VirtualHost 192.168.1.30>
ServerName www.tucolegio.com
#Otras directivas
</VirtualHost>

Hay que tener en cuenta que también se puede especificar el número de puerto en el que
se podrían utilizar los hosts virtuales basados en nombre. Por ejemplo:

NameVirtualHost 192.168.1.15:8080

ServerAlias
Esta directiva establece nombres alternativos para un host. Es utilizada dentro de
servidores virtuales. Por ejemplo puede necesitar ServerAlias en una red local donde los
usuarios están acostumbrados a no utilizar el nombre de dominio completo.

<VirtualHost 192.168.1.12>
ServerName aula.server.com
ServerAlias aula aula2.server.com aula2
#Otras directivas
</VirtualHost>

otro ejemplo:

<VirtualHost 192.168.1.100>
ServerName www.la-tierra-es-redonda.com
ServerAlias www.latierraesredonda.com www.tierraredonda.com
#Otras directivas
</VirtualHost>

ServerPath

Para poder utilizar los servidores virtuales por nombre, los clientes deben hacer
peticiones que incluyan un campo de encabezado Host . El encabezado Host se define
en la especificación de HTTP/1.1, y aunque algunos navegadores que soportan
HTTP/1.0 han sido mejorados con la capacidad de manejar este encabezado, los más
antiguos directamente no lo soportan.

Las peticiones desde estos navegadores antiguos no son bien entendidas por el servidor,
que no será capaz de determinar a qué host virtual se pretende acceder, y responderá
siempre con el servidor por defecto.

En muchos casos no se desea perder los accesos de estos posibles usuarios. Existe una
solución basada en la directiva ServerPath que designa una manera alternativa de
acceder a los datos que forman parte de servidores virtuales. Mediante ServerPath se
define una localización en el host por defecto que se refiere al servidor virtual. Por
ejemplo:

#Se supone que el host por defecto se llama www.ejemplo.es

NameVirtualHost 193.147.87.211

<VirtualHost 193.147.87.211>
ServerName virtual1.ejemplo.es
ServerPath /virtual1
DocumentRoot /usr/local/proyecto/htdocs/virtuales/virtual1
</VirtualHost>

Con estas líneas se consigue que las peticiones de la localización /virtual1 del servidor
por defecto sean servidas desde el raíz del host virtual virtual1.ejemplo.es. De esta
forma las páginas podrán ser accesibles mediante las siguientes URLs:
#Acceso para clientes que no soportan hosts virtuales por nombre
http://www.ejemplo.es/virtual1
#Acceso para clientes que soportan hosts virtuales por nombre http://virtual1.ejemplo.es

Como se ve, el uso de esta alternativa exige un poco de disciplina, pero con ello se
garantiza el acceso a los datos independientemente de la versión de navegador que
utilicen los usuarios.

<VirtualHost>

La directiva del contenedor <VirtualHost> especifica una configuración para el host


virtual. Todas las directivas encontradas entre <VirtualHost> y </VirtualHost> se
aplican únicamente a dicho host virtual. Se puede utilizar cualquier directiva que esté
permitida en el contexto de un host virtual. Cuando un servidor recibe la solicitud de un
documento en un host virtual determinado, utiliza las directivas de configuración
encerradas en <VirtualHost>. Sintaxis: <VirtualHost addr[:port]…. > …..
</VirtualHost>. Ejemplo:

Una dirección IP

<VirtualHost 192.168.1.100>
#directivas correspondientes a este host virtual
</VirtualHost>

Una dirección IP con su número de puerto


<VirtualHost 192.168.1.100:8080>
#directivas correspondientes a este host virtual
</VirtualHost>

Varias Direcciones IP

<VirtualHost 192.168.1.110 192.168.1.106>


#directivas correspondientes a este host virtual
</VirtualHost>

Varias Direcciones IP con número de puerto

<VirtualHost 192.168.1.110:8080 192.168.1.106:10000>


#directivas correspondientes a este host virtual
</VirtualHost>

You might also like