Es la siguiente parte de una configuración de host virtual sobre la que necesito más aclaraciones:
<VirtualHost *:80>
# Admin email, Server Name (domain name), and any aliases
ServerAdmin [email protected]
ServerName 141.29.495.999
ServerAlias example.com
...
Esta es una configuración de ejemplo, similar a la que tengo actualmente (no tengo un nombre de dominio en este momento).
<VirtualHost *:80>
- Permita la siguiente configuración para todas las solicitudes HTTP realizadas en el puerto 80 a las IP con las que se puede contactar a este servidor. Por ejemplo, si se puede acceder al servidor en más de una IP, puede restringir esta directiva a solo una en lugar de a ambas.
ServerName
- Si la parte del host de la solicitud HTTP coincide con este nombre, permita la solicitud. Normalmente, este sería un nombre de dominio que se asigna a una IP, pero en este caso el host de solicitud HTTP debe coincidir con esta IP.
ServerAlias
- Nombres alternativos aceptados por el servidor.
La parte confusa para mí es que, en el escenario anterior, si configuré ServerAlias mytestname.com
y luego hice una solicitud HTTP mytestname.com
, ¿tendría que haber un registro DNS apuntando a la IP del servidor para que esto funcione? En cuyo caso, ¿ServerAlias es básicamente entradas EXTRA ServerName?
Digamos que tenía una entrada de DNS tal que, foobar.com = 141.29.495.999
pero luego la tuve ServerName = 141.29.495.999
y ServerAlias
estaba vacía, ¿eso significaría que aunque foobar.com se resuelva con la IP correcta, porque no hay referencia para aceptar foobar.com en ServerName
o ServerAlias
?
O algo. Hombre, estoy confundido.
Respuestas:
Piensa en esto, de esta manera:
DNS es el directorio telefónico / páginas amarillas. Cuando alguien quiere llamar a su teléfono, puede buscar su nombre y obtener su número de teléfono y llamar a ese teléfono. DNS hace lo mismo pero para las computadoras: cuando alguien quiere ir,
www.example.com
le piden a DNS la dirección IP y luego pueden contactar a la computadora que tiene esa dirección IP. Eso es lo que significa resolver . Resolver una dirección IP no tiene nada que ver con Apache; Es estrictamente una cuestión de DNS.El
ServerName
yServerAlias
es más como la lista de teléfonos internos de una empresa. Su servidor web es la centralita; aceptará todas las conexiones entrantes al servidor. Luego, el cliente / llamante les dirá qué nombre están buscando, y buscará en la configuración de Apache cómo manejar ese nombre.Si el nombre no aparece como ServerName / ServerAlias en la configuración de apache, apache siempre les dará el primer VirtualHost en la lista. O, si no hay VirtualHost, dará el mismo contenido sin importar el nombre de host que se indique en la solicitud.
ETA: Entonces, paso a paso para una conexión normal:
http://www.example.com
en su navegador.www.example.com
.www.example.com
(ese es elHost:
encabezado en HTTP).www.example.com
. Cualquiera de los siguientes puede suceder:www.example.com
aparece comoServerName
aoServerAlias
para aVirtualHost
: si es así, utilizará la configuración de ese VirtualHost para entregar el contenido.www.example.com
no figura en ninguno de ellos; de ser así, el primer Virtualhost de la lista se utilizará para entregar el contenido.fuente
www.example.com
, el DNS resolverá la dirección IP para ese nombre, y la parte del host de la solicitud HTTP en realidad será una IP; al llegar al servidor, Apache también sabrá que la solicitud de pedidowww.example.com
y si hay unaServerName
oServerAlias
Directiva para ese nombre de dominio, puede servir la raíz del documento?The server has VirtualHosts but www.example.com isn't listed in any of them - if so, the first Virtualhost in the list will be used to deliver the content.
. Probé esto. Es correcto, pero no estoy seguro de que sea primero Virtualhost. Gracias por la información. +1Si no define ServerName, apache2 intentará adivinarlo desde / etc / hosts. ServerAlias es opcional. El caso de uso más habitual es donde
Depende de usted (no del trabajo de apache2) asegurarse de que las solicitudes lleguen a la IP del servidor web, por ejemplo, registrar un dominio y configurar registros DNS. Una forma muy común de hacerlo (para pruebas y desarrollo) sin registros de dominio y DNS es configurar su máquina local / etc / hosts para que example.com apunte a la IP de su servidor.
fuente
Sugeriría encarecidamente leer la documentación oficial sobre el tema: https://httpd.apache.org/docs/2.4/vhosts/name-based.html
dice "Si no se encuentra ServerName o ServerAlias coincidentes en el conjunto de hosts virtuales que contienen la combinación de puerto y dirección IP más específica, se utilizará el primer host virtual que coincida con el que se usará". . Entonces, en su caso, si accede a "foobar.com", httpd usaría la primera entrada de VirtualHost que de alguna manera coincida con la IP 141.29.495.999
El mismo documento dice "Muchos servidores quieren ser accesibles por más de un nombre. Esto es posible con la directiva ServerAlias". Por lo tanto, puede considerar ServerAlias simplemente como entradas adicionales de ServerName.
fuente