| Entorno de publicación web: Supuesto práctico de Apache, Samba, DNS y DHCP | ||
|---|---|---|
| Anterior | Configuración de Apache | Siguiente |
Las directivas de esta sección definen los valores del serviode web principal, el que responde a cualquier petición que no sea atendida por ningún host virtual. Estas directivas también se aplican a los servidores virtuales como valores predeterminados si esto no especifican un valor propio específico del host virtual, com ya habíamos comentado.
Algunas de estas directivas dependen de módulos DSO.
Esta directiva especifica qué usuario es el que ejecuta los procesos del servidor web y en consecuencia los permisos de lectura y escritura que se aplican sobre los recursos.
User apache
Esta directiva especifica qué grupo es el que ejecuta los procesos del servidor web y en consecuencia los permisos de lectura y escritura que se aplican sobre los recursos.
Group apache
ServerAdmin especifica la dirección de correo a la que se deben enviar los problemas de uso del servidor Web. Esta dirección aparece en ciertas páginas de error, como por ejemplo cuando se solicita una página errónea.
ServerAdmin root(EN)centro.ies
ServerName especifica el nombre y el puerto que el servidor utiliza para identificarse. Con una correcta configuración, este valor se puede determinar automáticamente, pero es recomendable especificarlo explíciatamente para evitar problemas durante el arranque.
Si no se pone un nombre DNS válido, no funcionarán las redirecciones generadas por el servidor. Ver UseCanonicalName.
Si no existe un nombre DNS registrado entonces deberemos poner la dirección IP. El acceso mediante IP siempre es posible, pero además funcionarán las redirecciones.
ServerName www.iesbezmilian.org 80
Esta directiva tendremos que modificarla en el fichero inicial de configuración.
UseCanonicalName determina como Apache construye las autoreferencias de URL y las variables SERVER_NAME y SERVER_PORT.
Cuando está como "Off", Apache usará los valores suministrados por el cliente. Cuando está como "On", Apache usará la directiva ServerName.
UseCanonicalName Off
DocumentRoot indica el directorio donde se almacenan los documentos web.
Existe la posibilidad de utilizar enlaces simbólicos dentro del DocumentRoot.
DocumentRoot "/var/www/html"
Esta directiva tendremos que modificarla en el fichero inicial de configuración si queremos ubicar las páginas en un directorio distinto al predeterminado.
Options indica varias posibles opciones de comportamiento. Se pueden aplicar a un directorio concreto. El formato es:
Options [+|-]option [[+|-]option] ...
donde un "+" añade la opción y un "-" quita la opción. Ciertas opciones pueden depender de algún módulo DSO.
Las opciones que tenemos son:
All todas las opciones salvo MultiViews. Es el valor predeterminado
ExecCGI Se permite la ejecución de scripts CGI.
FollowSymLinks el servidor seguirá los enlaces simbólicos. Tener esta opción activa aumenta el rendimiento ya que el servidor no comprueba si un fichero o directorio es un enlace simbólico y es má rápido, pero en algunos casos puede presentar problemas de inseguridad.
Includes se permiten incluir Server-side.
IncludesNOEXEC se permiten incluir Server-side pero se deshabilitan las órdenes #exec y #exec CGI.
Indexes Si una URL solicita un directorio y no existe DirectoryIndex (v.g., index.html) en ese directorio, el servidor devolverá una lista del contenido del directorio.
MultiViews se permiten mostrar contenido negociado en funcion de diversos valores.
SymLinksIfOwnerMatch Se sigue un enlace simbólico sólo si los propietarios del enlace y del destino coinciden.
Ejemplos:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options Includes
</Directory>
|
En este caso sólo se activará Includes para el directorio /web/docs/spec. Sin embargo si las directivas usan + y - :
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
|
entonces se activan las opciones FollowSymLinks e Includes para el directorio /web/docs/spec.
UserDir indica el directorio que se añade al directorio personal de los usuarios para servior páginas cuando se realiza una peticion del tipo ~usuario.
El directorio tiene que estar accesible (755) para el usuario que ejecuta el proceso apache, también apache como indicamos anteriormente en la directiva User. Si no tiene permisos se generará un mensaje "403 Forbidden".
UserDir podrá tener el valor "disable" para no activar los directorio personales o indicar un nombre de directorio "public_html" por ejemplo.
Para desactivar web en directorio personales:
UserDir disable
Para activar directorios personales
UserDir public_html
en este caso, si en un navegador ponemos "http://www.miservidor.dom/~julia"
el contenido que aparece debe corresponder al directorio /home/julia/public_html, suponiendo que el directorio personal del usuario julia es /home/julia.
Esta directiva depende del módulo mod_userdir.c, por lo que es habitual poner esta directiva en el fichero de configuración como:
<IfModule mod_userdir.c>
UserDir disable
#UserDir public_html
</IfModule>
|
También se puede especificar directorios UserDir de forma limitada:
UserDir disabled
UserDir enabled user1 user2 user3
o bien:
UserDir enabled
UserDir disabled user4 user5 user6
DirectoryIndex indica como responde el servidor cuando se solicita un directorio. Lo habitual es que que haya una página que se cargue automáticamente. Ver también Option Indexes.
Por ejemplo:
DirectoryIndex index.php index.html indice.html index.html.var
Es posible aplicar esta directiva a directorios individuales para indicar índices distintos. Por ejemplo:
<Directory /var/www/html/varios>
DirectoryIndex pagina.html
</directory>
|
haría que al solicitar el directorio varios se cargara pagina.html. Evidentemente, si se pide una página concreta por su nombre es la solicitada la que se carga.
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 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 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 afecta a los hosts que no pueden acceder a una determinada área del servidor. El resto es idéntico a Allow.
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.
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 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 permite especificar una configuración concreta para el acceso a ficheros concretos. La configuración. Similar al Location.
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 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 es idéntico a Alias salvo que podemos especificar expresiones regulares en lugar de un valor fijo.
TypesConfig describe donde encontrar el fichero mime.types (o equivalente).
TypesConfig /etc/mime.types
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 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 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 Controla el número de mensajes registrados en error_log.
Puede ser: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
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 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 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 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 permite inidcar al cliente que un documento ha cambiado.
Por ejemplo:
Redirect permanent /curso2003 http://www.iesbezmiliana/cursoactual
|
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 es el icono que se muestra para ficheros sin icono asocioado.
DefaultIcon /icons/unknown.gif
|
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 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
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 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 se utiliza para especificar el idioma predeterminado cuando se negocian los contenidos con el cliente.
DefaultLanguage es
|
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 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 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 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
|
AddType permite añadir o modificar la configuración MIME de un tipo concreto. Por ejemplo:
AddType application/x-tar .tgz
|
Permite personalizar las respuestas de los mensajes de error en tres formas distintas, un texto simple, una redirección a una página local o una redirección externa. El primer campo es el código de error correspondiente, por ejemplo 404 es el código de docmento inexistente. El segundo la acción que se realiza.
El administrador Web puede de modificar estos mensajes de error para facilitar el acceso a los clientes, es decir cuando alguien solicitaa alguan página que no existe puede mostrar una página donde haya enlaces a los contenidos que se albergan.
Vemos algunos ejemplos:
ErrorDocument 500 "El servidor ha fallado."
ErrorDocument 404 /noencontrado.html
ErrorDocument 404 "/cgi-bin/noencontrado.pl"
ErrorDocument 402 http://www.exteno.dom/datos.html
Alias /error/ "/var/www/error/"
<IfModule mod_negotiation.c>
<IfModule mod_include.c>
<Directory "/var/www/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
ErrorDocument 410 /error/HTTP_GONE.html.var
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
ErrorDocument 415 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
</IfModule>
</IfModule>
|
BrowserMatch modifica las repuestas normales HTTP en función de los problemas conocidos de ciertos navegadores.
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
|