You are on page 1of 7

Configuración avanzada del servidor web Apache 2

1. Directorios personales de usuario.

2. Tecnología Server Side Include (SSI) de Apache.

La tecnología Server Side Include (SSI) es una forma sencilla de realizar algo parecido a la
programación web en el lado del servidor. Por ejemplo, puede añadir a una página web el
contenido de un archivo (con la directiva #include), puede mostrar ciertos datos en la página
web (por ejemplo, con la directiva date_local y otras muchas), y si la seguridad de su sitio
web no le importa demasiado, puede incluso ejecutar programas locales.

El primer paso a realizar es activar el módulo de inclusión de archivos en los documentos web
(módulo include):

sudo a2enmod include

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

1
Continuamos editando el fichero de configuración default de la carpeta de los sitios web
disponibles de Apache2:

sudo nano /etc/apache2/sites-available/default

En este archivo, esta sección...


<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

…se editará para que quede de la siguiente manera (lo que hay que añadir aparece en rojo):
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride None
Order allow,deny
allow from all
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>

Con las modificaciones realizadas, lo que hacemos es habilitar la inclusión de archivos y


permitir que los archivos con la extensión .shtml se puedan ejecutar correctamente dando la
salida deseada.

Por tanto, todo archivo que incluya líneas de código de Server Side Include deberá tener
obligatoriamente la extensión .shtml

Para que los cambios den resultado, reiniciaremos el servicio:


sudo /etc/init.d/apache2 restart

Con el fin de probar el funcionamiento correcto de la tecnología instalada, podemos crear este
archivo de prueba, el cual guardaremos en el directorio de publicación por defecto de Apache2
con el nombre test.shtml
<html>
<head>
<title>Prueba de SSI</title>
</head>
<body>
<!--#echo var="DATE_LOCAL" -->
</body>
</html>

En el navegador del servidor web, visualizaremos la página escribiendo la URL


siguiente: http://localhost/test.shtml Nos deberá aparecer la fecha de hoy.

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

2
Una lista de posibles parámetros de SSI a utilizar en las páginas la tenemos en el documento:

- Configuración y uso de SSI en Apache.pdf

3. Hosting virtual basado en nombre.

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

3
C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

4
Otro ejemplo:

4. Traducción de URLs a directorios de Apache (directorios


virtuales).

5. Archivos de registro de acceso.

El log de accesos o requests de Apache registra todas las peticiones que el servidor web, o bien, el
VirtualHost recibe.
El formato de cada registro hace uso de un conjunto de identificadores que se reemplazan por los
datos de la petición a la hora de registrarla. En el sitio de Apache, pueden consultar
los identificadores de formato definidos para la versión 2.2:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

Directiva LogFormat
Estos formatos pueden definirse mediante la directiva LogFormat, y asociarse a un nombre:
LogFormat <STRING-FORMATO> [<NOMBRE-FORMATO>]
donde:
 STRING-FORMATO es una cadena de caracteres entre comillas dobles (“)
que contiene los identificadores de formato deseados

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

5
 (opcional) NOMBRE-FORMATO es el nombre al cual se asocia el
formato detallado previamente
Si se especifica el NOMBRE-FORMATO lo único que sucede es que el formato
definido se asocia a ese nombre.
Ejemplo:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-
Agent}i\"" combined

Directiva TransferLog
La directiva TransferLog utiliza el formato definido por el último LogFormat que no especifique
un NOMBRE-FORMATO (en ese caso también se puede usar un NOMBRE-FORMATO en lugar
del STRING-FORMATO para referirse a uno definido previamente).
Ejemplo:
LogFormat combined
TransferLog logs/www-access_log
Si no hubiera ninguno definido, toma por defecto el Common Log Format (CLF):
"%h %l %u %t \"%r\" %>s %b"

Directiva CustomLog
Si queremos generar diferentes logs, cada uno con su formato, debemos hacer uso de la directiva
CustomLog:
CustomLog <ARCHIVO> <STRING-FORMATO>|<NOMBRE-FORMATO>
donde:
 ARCHIVO indica el archivo físico donde se registrarán las peticiones, el
cual debe ser relativo a la ubicación definida en la directiva ServerRoot (por
defecto, el directorio donde instalamos Apache)

Ejemplo:
CustomLog logs/www-access_log common
o bien
CustomLog logs/www-access_log "%h %l %u %t \"%r\" %>s %b"

Una tabla con la selección de los parámetros más importantes para personalizar el registro de
accesos se muestra en las siguientes páginas:

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

6
Format String Description
%a Client IP address of the request (see the mod_remoteip module).
%{c}a Underlying peer IP address of the connection (see the mod_remoteip module).
%A Local IP-address.
%B Size of response in bytes, excluding HTTP headers.
%D The time taken to serve the request, in microseconds.
%{VARNAME}
The contents of the environment variable VARNAME.
e
%f Filename.
Remote hostname. Will log the IP address if HostnameLookups is set to Off,
which is the default. If it logs the hostname for only a few hosts, you probably
%h
have access control directives mentioning them by name. See the Require host
documentation.
%p The canonical port of the server serving the request.
The canonical port of the server serving the request, or the server's actual port, or
%{format}p
the client's actual port. Valid formats are canonical, local, or remote.
%P The process ID of the child that serviced the request.
The process ID or thread ID of the child that serviced the request. Valid formats
%{format}P
are pid, tid, and hextid. hextid requires APR 1.2.0 or higher.
Status. For requests that have been internally redirected, this is the status of the
%s
original request. Use %>s for the final status.
Time the request was received, in the format [18/Sep/2011:19:18:28 -0400]. The
%t
last number indicates the timezone offset from GMT
%T The time taken to serve the request, in seconds.
Remote user if the request was authenticated. May be bogus if return status (%s) is
%u
401 (unauthorized).
%U The URL path requested, not including any query string.
%v The canonical ServerName of the server serving the request.
%V The server name according to the UseCanonicalName setting.
Bytes received, including request and headers. Cannot be zero. You need to enable
%I
mod_logio to use this.
Bytes sent, including headers. May be zero in rare cases such as when a request is
%O
aborted before a response is sent. You need to enable mod_logio to use this.
Bytes transferred (received and sent), including request and headers, cannot be
%S zero. This is the combination of %I and %O. You need to enable mod_logio to use
this.

C o n f i g u r a c i ó n a v a n z a d a d e l s e r v i d o r w e b A p a c h e 2

You might also like