Configuración de Apache

El servidor web Apache se basa en el originar servidor web NCSA, al que ha sustituido prácticamente en su totalidad

El servidor Web Apache se configura mediante un fichero de texto que contiene las directivas que le indican las instrucciones sobre como tiene que ser su comportamiento. Normalmente cada distribución de Apache trae un fichero de configuración en el que los cambios que tendremos que realizar son mínimos.

Se puede encotrar un información detallada en sobre las directivas en http://httpd.apache.org/docs-2.0/

La configuración se especifica en el fichero httpd.conf que está formado por directivas de configuración y línea de comentario que comienzan por un #. Los ficheros de configuración de Apache contienen una directiva por línea. Se puede usar "\" al final de una línea para indicar que una directiva continua en la próxima línea. No puede haber otros caracteres o espacio en blanco entre el carácter "\" y el fin de la línea. No se pueden incluir comentarios en una línea, después de una directiva de configuración. Los espacios y líneas en blanco antes de una directiva de configuración se ignoran, de manera que se puede dejar una sangría en las directivas para mayor claridad.


Configuración de Apache


Módulos

Apache es un servidor modular. Esto implica que en el servidor básico se incluyen únicamente las funcionalidades más básicas. Otras funcionalidades se encuentran disponibles a través de módulos que pueden ser cargados por Apache. Por defecto, durante la compilación se incluye en el servidor un juego de módulos base. Si el servidor se compila para usar carga dinámica de módulos, entonces los módulos pueden ser compilados por separado, e incluidos en cualquier momento usando la directiva LoadModule. En caso contrario, Apache deberá ser recompilado para agregar o eliminar módulos. La directivas de configuración se pueden incluir de forma condicional dependiendo de la presencia de un módulo particular, poniéndolas dentro de un bloque <IfModule> como vermos más adelante.

 

Leer más...


AccessFileName

AccessFileName especifica el nombre del fichero de configuración particular de un directorio. En este directorio se pueden incluir las directivas que queremos que se apliquen a este directorio concreto. El valor habitual es:

AccessFileName .htaccess

Ver AllowOverride a continuación.


AllowOverride

AllowOverride controla qué diectivas se pueden situar el los ficheros .htaccess.

Los valores de AllowOverride pueden ser "All", "None", o una combinación de:

  • AuthConfig: Permitir el uso de directivas de autorización (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).

  • FileInfo Permitir el uso de directivas de control de tipo de documentos (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, etc).

  • Indexes Permitir el uso de directivas que controlan los índices de directorios (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).

  • Limit Permitir el uso de directivas de acceso de hosts (Allow, Deny y Order).

  • Options Permitir el uso los valores de la directiva Options.

Por ejemplo:

Options FileInfo AuthConfig Limit

o bien

AllowOverride None

Hay que tener en cuenta que si AllowOverride tiene un valor distinto a "None", el servidor web tendrá que buscar este fichero en todos los directorios que haya hasta llegar al fichero o directorio solicitado para aplicar la confiuración. Esto puede influir en el rendimiento del servidor web. Por este motivo es aconsejable poner de forma global

AllowOverride None

y después activarlo en el directorio concreto que queramos que tenga una configuración específica.


Allow

Allow afecta a los hosts que pueden acceder a una determinada área del servidor. El acceso se puede controlar por nombre, IP, rango de IP u otras características quese puedan almacenar en variables de entorno.

El primer argumento de esta directiva es siempre "from". Los siguientes argumentos pueden tener diferentes formas:

All se permite el acceso a todos los hosts salvo lo especificado en Deny y Order que se verá más adelante.

Para permitir el acceso a un grupo concreto de hosts podremos especificar:

Un nombre de dominio:

Ejemplo: Allow from iesbezmiliana.org

Una dirección IP

Ejemplo: Allow from 192.168.1.3

Una dirección IP parcial

Ejemplo: Allow from 192.168.1

Una dirección de red/máscara

Ejemplo: Allow from 10.1.0.0/255.255.0.0

Una dirección de red/numero

Ejemplo: Allow from 10.1.0.0/16

Uso de una variable de entorno como por ejemplo User-Agent (navegador), Referer (procedencia del enlace), u otra cabecera de la petición HTTP.

Ejemplo:

SetEnvIf User-Agent ^TocToc/2.0 dejame

 <Directory /docroot>
  Order Deny,Allow
  Deny from all
  Allow from env=dejame
 </Directory> 

En este caso sólo se permitiría el acceso a un navegador cuya identificación empezara por ^TocToc/2.0, en otro caso lo deniega.


Deny

Deny afecta a los hosts que no pueden acceder a una determinada área del servidor. El resto es idéntico a Allow.


Order

La directiva Order directive controla el orden en que se evalúan las directivas Allow y Deny:

Order Deny,Allow

Primero se evalúa Deny. Se permite acceso a cualquier host que primero no esté indicado en Deny o que sí lo esté en Allow. El acceso se garantiza por defecto.

Order Allow,Deny

Primero se evalúa Allow. Se deniega acceso a cualquier host que primero no esté indicado en Allow o que sí lo esté en Deny. El acceso se deniega por defecto.

Los valores se separan por comas y sin espacios.

En el siguiente ejemplo, todos los hosts del dominio iesbezmiliana.org tienen acceso pero ningún otro.

Order Deny,Allow

 Deny from all
 Allow from iesbezmiliana.org

En el siguiente ejemplo todos los hosts del dominio iesbezmiliana.org tienen acceso salvo los host que estén en el subdominio piratillas.iesbezmiliana.org. El resto de hosts que no están en el dominio iesbezmiliana.org tampoco tendrían acceso.

Order Allow,Deny

 Allow from iesbezmiliana.org
 Deny from piratillas.iesbezmiliana.org

Por otro lado, si cambiamos Order en el anterior ejemplo y lo ponemos como Deny,Allow, todos los hosts tendrían acceso. Esto sucede porque Allow se evalúa en segundo lugar y permitiría acceso a piratillas.iesbezmiliana.org y el acceso por defecto es aceptar.

La presencia de una directiva Order puede afectar al acceso a una parte del servidor incluso en ausencia de directivas Allow y Deny por los efectos de los valores predeterminados. Por ejemplo:

<Directory /www>

  Order Allow,Deny
 </Directory> 

denegaría todo el acceso al directorio /www ya que el estado por defecto sería Deny.


Location

LocationMatch proporciona control de acceso según petición.

Por ejemplo:

<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from .iesbezmiliana.org
</Location>

haría que cualquier petición /server-info generara un informe sobreel estado del servidor.


LocationMatch

LocationMatch proporciona control de acceso según petición basándose en una expresión regular.

Por ejemplo:

<LocationMatch "^/$>
    Options -Indexes
    ErrorDocument 403 /error/noindex.html
</LocationMatch>

haría que cualquier petición que comenzara y terminara por /, es decir el directorio principal del servidor se le desactivara la generación de índices y generara una página de error.


Files

Files permite especificar una configuración concreta para el acceso a ficheros concretos. La configuración. Similar al Location.


FilesMatch

FilesMatch permite especificar una configuración concreta para el acceso a ficheros concretos basándose en expresones regulares. La configuración. Similar al LocationMatch.

Por ejemplo:

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

impediría que alguien pudiera consultar desde un navegador cualquier fichero que comenzara por .ht, para evitar hacer visibles los ficheros .htaccess y .htpasswd.


Alias

Alias permite albergar ficheros fuera del directorio especificado en DocumentRoot

La usaremos como:

Alias directorio_relativo directrorio_absoluto

Por ejemplo:

Alias /manual "/var/www/manual"

Haría que siempre que pongamos http://www.iesbezmiliana.org/manual el contenido que se sirva sea el de /var/www/manual independientemente de donde esté definido el DocumentRoot.

También:

Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

AliasMatch

AliasMatch es idéntico a Alias salvo que podemos especificar expresiones regulares en lugar de un valor fijo.


TypesConfig

TypesConfig describe donde encontrar el fichero mime.types (o equivalente).

TypesConfig /etc/mime.types


DefaultType

DefaultType es el tipo MIME predeterminado que el servidor va a utlizar para un documento en el caso de que no pueda determinarlo, por ejemplo, a partir de su extensión.

Si la mayoría de los documentos son texto o HTML "text/plain" es el valor adecuado. Si la mayoría son binarios, como aplicaciones o imágenes se puede usar "application/octet-stream" para evitar que los navegadores intenten mostralos como si fueran texto.

DefaultType text/plain


HostnameLookups

HostnameLookups registra los nombres o las direcciones IP de los clientes. Por defecto está en Off para evitar que para cada consulta se tenga que realizar una resolución DNS para averiguar el nombre.

HostnameLookups Off


ErrorLog

ErrorLog indica la ubicación del fichero de registro de errores en las consultas. Es conveniente especificar un fichero de registro en cada VirtualHost

ErrorLog logs/error_log


LogLevel

LogLevel Controla el número de mensajes registrados en error_log.

Puede ser: debug, info, notice, warn, error, crit, alert, emerg.

LogLevel warn


LogFormat

LogFormat permite definir distintos nombres para modelos de información que queremos guardar o registrar sobre las consultas que se hacen al servidor. Los valores que vienen predefinidos son:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

Como con estos valores es suficiente para recoger la información necesaria no vamos a entrar en detalles sobre las variables que se utilizan. Más detalles en http://www.apache.org/manual/mod/mod_log_config.htm


CustomLog

CustomLog la directiva especifica primero el fichero donde se anotan las peticiones hechas al servidor y en segundo lugar el tipo de anotación según se haya definido en alguna directiva LogFormat.

Por ejemplo, podríamos poner:

CustomLog logs/access_log common

o bien

CustomLog logs/access_log combined

o bien

CustomLog logs/referer_log referer

o

CustomLog logs/agent_log agent

ServerSignature

ServerSignature añade una línea informativa al final de las páginas generadas automáticamente, como cuando no se encuentra un documento.

Puede ser

ServerSignature On | Off | EMail

Por ejemplo:

ServerSignature On


ScriptAlias

ScriptAlias controla qué directorios contienen scripts del servidor. Es básicamente como Alias, salvo que sus contenidos se tratan como aplicaciones y el servidor las ejecuta cuando se solicitan.

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

Redirect

Redirect permite inidcar al cliente que un documento ha cambiado.

Por ejemplo:

Redirect permanent /curso2003 http://www.iesbezmiliana/cursoactual

AddIcon

AddIcon indica al servidor qué imagen motrar según el tipo de fichero en los listados generados automáticamente. Sólo es válida para los directorios con la opción de FancyIndexing activa, es decir en le directorio tenemos IndexOptions FancyIndexing

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon

DefaultIcon es el icono que se muestra para ficheros sin icono asocioado.

DefaultIcon /icons/unknown.gif

AddDescription

AddDescription permite poner una breve descripción tras el fichero, solo cuando es está activo FancyIndexing, decir en le directorio tenemos IndexOptions FancyIndexinga

El formato es

AddDescription "descripcion" tipofich

#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

ReadmeName

ReadmeName es el nombre del fichero que el servidor va a buscar para añadir a la lista de ficheros cuando tenga que generar un índice.

ReadmeName README.html


HeaderName

HeadeName es el nombre del fichero que el servidor va a buscar para poner delante de la lista de ficheros cuando tenga que generar un índice.

HeaderName HEADER.html

IndexIgnore

IndexIgnore es el conjunto de nombres de ficheros que no se deben mostrar en los listados de directorios. Por ejemplo:

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

DefaultLanguage

DefaultLanguage se utiliza para especificar el idioma predeterminado cuando se negocian los contenidos con el cliente.

DefaultLanguage es

AddLanguage

Añade un nuevo idioma

# Danish (da) - Dutch (nl) - English (en) - Estonian (et)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Norwegian (no) - Norwegian Nynorsk (nn) - Korean (kr) 
# Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
# Russian (ru) - Croatian (hr)
#
AddLanguage es .es
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage kr .kr
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr

LanguagePriority

LanguagePriority permite dar precedencia a lagunos idiomas en las negociaciones de contenidos

LanguagePriority es en da nl et fr de el it ja kr no pl pt pt-br ltz ca sv tw

AddDefaultCharset

AddDefaultCharset especifica un conjunto de caracteres por defecto para las páginas devueltas.

El valor predeterminado es iso-8859-1 (latin1).

AddDefaultCharset ISO-8859-1

AddCharset

AddCharset son los nombres de ficheros y extensiones habituales para los conjuntos de caracteres.

AddCharset ISO-8859-1  .iso8859-1  .latin1
AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3  .latin3
AddCharset ISO-8859-4  .iso8859-4  .latin4
AddCharset ISO-8859-5  .iso8859-5  .latin5 .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6  .latin6 .arb
AddCharset ISO-8859-7  .iso8859-7  .latin7 .grk
AddCharset ISO-8859-8  .iso8859-8  .latin8 .heb
AddCharset ISO-8859-9  .iso8859-9  .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8       .utf8
AddCharset GB2312      .gb2312 .gb 
AddCharset utf-7       .utf7
AddCharset utf-8       .utf8
AddCharset big5        .big5 .b5
AddCharset EUC-TW      .euc-tw
AddCharset EUC-JP      .euc-jp
AddCharset EUC-KR      .euc-kr
AddCharset shift_jis   .sjis