📄 name-based.xml.es
字号:
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"><?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?><!-- English Revision: 151405 --><!-- Copyright 2004 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.--><manualpage metafile="name-based.xml.meta"><parentdocument href="./">Hosting Virtual</parentdocument><title>Soporte de Hosting Virtual basado en nombres</title><summary> <p>Este documento describe cómo y cuándo debe usarse hosting virtual basado en nombres.</p></summary><seealso><a href="ip-based.html">Hosting virtual basado enIPs</a></seealso><seealso><a href="details.html">Discusión en profundidad sobre elproceso de selección de host virtual</a></seealso><seealso><a href="mass.html">Configuración dinámica de Hosting virtual masivo</a></seealso><seealso><a href="examples.html">Ejemplos de hosting virtual paraconfiguraciones típicas</a></seealso><seealso><a href="examples.html#serverpath">Ejemplo de configuración de ServerPath</a></seealso><section id="namevip"><title>Diferencias entre el hosting vitualbasado en nombres y el basado en IPs</title> <p>El hosting virtual basado en IPs usa la dirección IP de la conexión para determinar qué host virtual es el que tiene que servir. Por lo tanto, necesitará tener diferentes direcciones IP para cada host. Si usa hosting virtual basado en nombres, el servidor atiende al nombre de host que especifica el cliente en las cabeceras de HTTP. Usando esta técnica, una sola dirección IP puede ser compartida por muchos sitios web diferentes.</p> <p>El hosting virtual basado en nombres es normalmente más sencillo, porque solo necesita configurar su servidor de DNS para que localice la dirección IP correcta y entonces configurar Apache para que reconozca los diferentes nombres de host. Usando hosting virtual basado en nombres también se reduce la demanda de direcciones IP, que empieza a ser un bien escaso. Por lo tanto, debe usar hosting virtual basado en nombres a no ser que haya alguna razón especial por la cual tenga que elegir usar hosting vitual basado en direcciones IP. Algunas de éstas razones pueden ser:</p> <ul> <li>Algunos clientes antiguos no son compatibles con el hosting virtual basado en nombres. Para que el hosting virtual basado en nombres funcione, el cliente debe enviar la cabecera de Host HTTP. Esto es necesario para HTTP/1.1, y está implementado como extensión en casi todos los navegadores actuales. Si necesita dar soporte a clientes obsoletos y usar hosting virtual basado en nombres, al final de este documento se describe una técnica para que pueda hacerlo.</li> <li>El hosting virtual basado en nombres no se puede usar junto con SSL por la naturaleza del protocolo SSL.</li> <li>Algunos sistemas operativos y algunos elementos de red tienen implementadas técnicas de gestión de ancho de banda que no pueden diferenciar entre hosts a no ser que no estén en diferentes direcciones IP.</li> </ul></section><section id="using"><title>Cómo usar hosting vitual basado ennombres</title><related> <modulelist> <module>core</module> </modulelist> <directivelist> <directive module="core">DocumentRoot</directive> <directive module="core">NameVirtualHost</directive> <directive module="core">ServerAlias</directive> <directive module="core">ServerName</directive> <directive module="core">ServerPath</directive> <directive module="core" type="section">VirtualHost</directive> </directivelist></related> <p>Para usar hosting virtual basado en nombres, debe especificar en el servidor qué dirección IP (y posiblemente qué puerto) se va a usar para atender las peticiones a los diferentes hosts. Esto se hace con la directiva <directive module="core">NameVirtualHost</directive>. Normalmente, cualquiera o todas las direcciones IP del servidor pueden usarse, también puede usar <code>*</code> como argumento para la directiva <directive module="core">NameVirtualHost</directive>. Si va a usar más de un puerto (por ejemplo si va usar SSL) debe añadir un puerto a cada argumento, por ejemplo <code>*:80</code>. Tenga en cuenta que especificando una dirección IP en la directiva <directive module="core">NameVirtualHost</directive> no hace que el servidor escuche automáticamente en esa dirección IP. Consulte la sección <a href="../bind.html">Especificar las direcciones y puertos que usa Apache</a> para obtener más información. Además, cualquier dirección IP especificada debe asociarse con un dispositivo de red del servidor.</p> <p>El siguiente paso es crear un bloque <directive type="section" module="core">VirtualHost</directive> para cada host diferente que quiera alojar en el servidor. El argumento de la directiva <directive type="section" module="core">VirtualHost</directive> debe ser el mismo que el argumento de la directiva <directive module="core">NameVirtualHost</directive> (por ejemplo, una dirección IP, o un <code>*</code> para usar todas las direcciones que tenga el servidor). Dentro de cada bloque <directive type="section" module="core">VirtualHost</directive>, necesitará como mínimo una directiva <directive module="core">ServerName</directive> para designar qué host se sirve y una directiva <directive module="core">DocumentRoot</directive> para indicar dónde están los contenidos a servir dentro del sistema de ficheros.</p> <note><title>Añadir hosts vituales a un servidor web ya existente</title> <p>Si está añadiendo hosts virtuales a un servidor web ya existente, debe crear también un bloque <directive type="section" module="core" >VirtualHost</directive> para el host que ya tenga funcionando. Los valores de las directivas <directive module="core">ServerName</directive> y <directive module="core" >DocumentRoot</directive> desde este nuevo host virtual deben tener los mismos valores que los de las directivas <directive module="core">ServerName</directive> <directive module="core">DocumentRoot</directive> globales. Ponga este host virtual como el primero en el archivo de configuración para que sea el que actúe como host por defecto.</p> </note> <p>Por ejemplo, suponga que está sirviendo el dominio <code>www.domain.tld</code> y quiere añadir el host virtual <code>www.otherdomain.tld</code>, que apunta a la misma dirección IP. Entonces, lo único que tiene que hacer es añadir lo siguiente al fichero <code>httpd.conf</code>:</p> <example> NameVirtualHost *:80<br /> <br /> <VirtualHost *:80><br /> <indent> ServerName www.domain.tld<br /> ServerAlias domain.tld *.domain.tld<br /> DocumentRoot /www/domain<br /> </indent> </VirtualHost><br /> <br /> <VirtualHost *:80><br /> <indent>ServerName www.otherdomain.tld<br /> DocumentRoot /www/otherdomain<br /> </indent> </VirtualHost><br /> </example> <p>También puede optar por especificar una dirección IP explícitamente en lugar de usar un <code>*</code> en las directivas <directive module="core" >NameVirtualHost</directive> y <directive type="section" module="core" >VirtualHost</directive>. Por ejemplo, puede hacer esto para hacer funcionar diferentes hosts virtuales basados en nombres en una dirección IP, o basados en IPs, o un conjunto de hosts virtuales basados en nombres en otra dirección.</p> <p>También puede que quiera que se acceda a un determinado sitio web usando diferentes nombres. Esto es posible con la directiva <directive module="core">ServerAlias</directive>, puesta dentro de la sección <directive type="section" module="core" >VirtualHost</directive>. Por ejemplo, en el primer bloque <directive type="section" module="core">VirtualHost</directive> de arriba, la directiva <directive module="core">ServerAlias</directive> indica la lista de nombres que pueden usarse para acceder a un mismo sitio web:</p> <example> ServerAlias domain.tld *.domain.tld </example> <p>entonces las peticiones para todos los hosts en el dominio <code>domain.tld</code> serán servidas por el host virtual <code>www.domain.tld</code>. Los carácteres comodines <code>*</code> y <code>?</code> pueden usarse para encontrar equivalencias con los nombres. Por supuesto, no puede inventarse nombres y ponerlos en la directiva <directive module="core">ServerName</directive> o <code>ServerAlias</code>. Primero debe tener su servidor de DNS debidamente configurado para que pueda hacer corresponder esos nombres con una dirección IP de su servidor.</p> <p>Para terminar, puede mejorar el rendimiento de la configuración de los hosts virtuales poniendo otras directivas dentro de las secciones <directive type="section" module="core">VirtualHost</directive>. La mayor parte de las directivas pueden ponerse en esos containers y cambiarán solo la configuración del host virtual al que se refieran. Para ver si una directiva en particualar puede usarse así, consulte el <a href="../mod/directive-dict.html#Context">Contexto</a> de la directiva. Las directivas de configuración especificadas en el <em>contexto del servidor principal</em> (fuera de cualquier sección <directive type="section" module="core">VirtualHost</directive>) se usan única y exclusivamente si sus valores no son sustituidos por alguno de los parámetros de configuración del host virtual.</p> <p>Cuando llega una petición, el servidor primero verifica si se está usando una dirección IP que coincide con el valor de la directiva <directive module="core" >NameVirtualHost</directive>. Si es el caso, mirará en cada sección <directive type="section" module="core">VirtualHost</directive> cuya IP coincida e intentará encontrar si el valor de la directiva <directive module="core" >ServerName</directive> o de la directiva <code>ServerAlias</code> coincide con el nombre del sitio web de la petición. Si encuentra una coincidencia, usa la configuración de ese servidor. Si no la encuentra, usa <strong>el primer host virtual de la lista</strong> cuya dirección IP coincida con el de la petición.</p> <p>Como consecuencia, el primer host virtual de la lista es el que se usa <em>por defecto</em>. La directiva <directive module="core">DocumentRoot</directive> del <em>servidor principal</em> no se usará <strong>nunca</strong> cuando una dirección IP coincida con el valor de la directiva <directive module="core">NameVirtualHost</directive>. Si quiere usar una configuración especial para peticiones que no coinciden con ningún host virtual en concreto, ponga esa configuración en una sección <directive type="section" module="core">VirtualHost</directive> y póngala la primera en el fichero de configuración.</p></section><section id="compat"><title>Compatibilidad con navegadoresantiguos</title> <p>Como se dijo antes, hay algunos clientes que no envían los datos necesarios para que funcione correctamente el hosting virtual basado en nombres. Estos clientes van a recibir siempre como respuesta a sus peticiones, páginas del primer host virtual que haya en la lista para esa dirección IP (el host virtual <cite>primario</cite> basado en nombres).</p> <note><title>¿Cómo de antiguo?</title> <p>Tenga en cuenta que cuando decimos antiguo, queremos decir realmente antiguo. Es muy poco probable que encuentre uno de esos navegadores en uso todavía. Todas las versiones actuales de cualquier navegador envían la cabecera <code>Host</code> que se necesita para que el hosting virtual basado en nombres funcione.</p> </note> <p>Existe una manera de evitar este problema con la directiva <directive module="core">ServerPath</directive>, aunque es un poco complicada:</p> <p>Ejemplo de configuración:</p> <example> NameVirtualHost 111.22.33.44<br /> <br /> <VirtualHost 111.22.33.44><br /> <indent> ServerName www.domain.tld<br /> ServerPath /domain<br /> DocumentRoot /web/domain<br /> </indent> </VirtualHost><br /> </example> <p>¿Qué significa esto? Esto significa que una petición de cualquier URI que empiece por "<code>/domain</code>" será servida por el host virtual <code>www.domain.tld</code>. Esto significa que las páginas pueden accederse como <code>http://www.domain.tld/domain/</code> por todos los clientes, aunque los clientes que envíen una cabecera <code>Host:</code> pueden también acceder con <code>http://www.domain.tld/</code>.</p> <p>Para hacer que esto funcione, ponga un enlace en la página de su host virtual primario a <code>http://www.domain.tld/domain/</code>. Entonces, en las páginas del host virtual, asegúrese de que usa o enlaces relativos (<em>por ejemplo</em>, "<code>file.html</code>" o "<code>../icons/image.gif</code>") o enlaces que contengan el <code>/domain/</code> anterior (<em>por ejemplo</em>, "<code>http://www.domain.tld/domain/misc/file.html</code>" o "<code>/domain/misc/file.html</code>").</p> <p>Esto requiere un poco de disciplina, pero siguiendo estas reglas, puede asegurarse, casi en todos los casos, de que las páginas de su sitio web podrán ser accedidas desde cualquier navegador, ya sea nuevo o antiguo.</p></section></manualpage>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -