Esta es una pregunta canónica sobre la resolución de DNS / nombres de host a IP / puertos
Ejemplo 1
Estoy ejecutando un servidor web en el puerto 80 y otro en el puerto 87. Me gustaría usar DNS para que www.example.com vaya al puerto 87. ¿Cómo puedo lograr esto usando solo DNS?
Ejemplo 2
Estoy ejecutando un servicio en mi servidor en un puerto no estándar. ¿Cómo puedo hacer que los clientes se conecten a este puerto no estándar automáticamente? ¿Puedo usar DNS? ¿Existe algún soporte específico para la aplicación donde DNS pueda indicar la IP y el puerto?
Ejemplo 3
¿Algunos protocolos de aplicación admiten específicamente el reconocimiento del nombre de host y permiten que se tomen acciones especiales basadas en esta información? ¿Hay otras preguntas sobre la falla del servidor que cubran algunas de estas?
Commandeering:
Originalmente, esta pregunta se refería a ejecutar IIS y Apache en el mismo servidor, pero los mismos conceptos se pueden aplicar a cualquier software de servidor que reciba conexiones de clientes. Las respuestas a continuación describen los problemas técnicos y las soluciones del uso de DNS y el soporte del protocolo de aplicación para asignar un número de puerto para que un cliente se conecte.
fuente
Respuestas:
No puede usar el DNS para apuntar a un puerto (a menos que el cliente admita registros SRV, la mayoría no).
Sitios web y protocolos con encabezados de host
Tendrá que implementar algún método de front-end para hacer esto. Por lo general, usaría un servidor web front-end o un software proxy dedicado para reenviar la conexión del puerto 80 al puerto 80 en función del nombre del servidor que se solicita en el encabezado. Algunos firewalls también pueden reenviarse según el encabezado del host.
Registros SRV
Algunos clientes admiten búsquedas de registros SRV que indican el nombre de host y el número de puerto del servidor para el servicio especificado (es decir, el usuario especifica "example.com", el cliente busca un registro SRV y obtiene "server101.example.com" en el puerto "255 "; luego se conecta a eso). Algunos clientes también implementan esto donde no es necesario (mi último teléfono inteligente buscaría los registros SRV al configurar una nueva cuenta de correo electrónico, por ejemplo).
Desafortunadamente, el soporte para registros SRV es muy poco común. Solo unos pocos protocolos notables exigen que sea compatible (Jabber / XMPP, Kerberos, LDAP, SIP) y no todos los clientes lo admiten, incluso cuando es obligatorio.
fuente
Cuando escribe http://www.domain.com en su navegador, se entiende que el puerto HTTP está en 80. Por lo tanto, no hay una forma directa de apuntar www.dominio.com al puerto 87 si ya tiene un servicio ejecutándose en ese puerto en IIS.
Dicho esto, hay algunas "soluciones".
Sam tiene razón, DNS es agnóstico cuando se trata de puertos. Cualquier tipo de redirección de puerto ocurre por el servicio que se ejecuta en ese puerto. Por lo tanto, necesitaría hacer algo con IIS para que esto suceda, si no tiene más remedio que dejarlo en el puerto 80.
También he solucionado su situación utilizando mod_proxy en Apache, no estoy seguro de si hay una manera de hacerlo con IIS.
fuente
Me temo que los nombres de dominio solo pueden asociarse con una dirección IP y no con un puerto.
La mayoría de los servidores web, por ejemplo (Apache, IIS, etc.) le permiten tener dos dominios alojados en la misma dirección IP al usar el hecho de que las solicitudes web contienen un campo de encabezado de host que identifica el dominio en la solicitud misma.
Si dice cuál es el servidor web que está utilizando, estoy seguro de que las personas pueden indicarle la documentación relevante para configurar su servidor como desee
fuente
Técnicamente, puede usar registros SRV en servidores DNS como se define en RFC 2782 para indicar a los navegadores qué servidores manejan http en qué puertos para un (sub) dominio:
Esto funciona bien para muchos protocolos / servicios, especialmente cuando el uso de registros SRV ya está definido en la especificación del protocolo.
Sin embargo, como dice este " Salón de la Vergüenza ", la mayoría de los navegadores web / clientes no lo admiten (para HTTP). También vea por qué-do-browsers-not-use-srv-records .
Básicamente, el acuerdo es que SRV no está incluido en el protocolo http como una obligación, por lo que cada navegador que lo implementa resuelve las URL de manera diferente a los navegadores que no lo hacen.
Por lo tanto, solo debe usar esto como un equilibrio de carga opcional, donde no es relevante qué servidor se elige en términos de contenido. "Opcional" porque no equilibrará gran parte de la carga si solo unos pocos clientes implementan esto.
fuente
DNS no tiene la capacidad de redirigir a un puerto específico, lo único que le importa a DNS es la resolución de la dirección IP de un nombre, y viceversa.
Algunos servicios, como los proveedores de DNS de IP dinámica, como NO-IP, brindan un servicio que puede ayudarlo a hacer algo similar para evitar el bloqueo de IP en los servicios de DNS en el hogar.
fuente
Para usar cualquier servicio (TBT) en un puerto no estándar y no escribir el puerto en URI, todos pueden usar registros SRV, definidos en RFC 2782.
Todos los demás http-hosts en la zona aún se servirán en el puerto predeterminado 80
fuente
La forma más simple es usar un proxy inverso y configurarlo como su proxy web. Puede configurar un
nginx
oapache
para ello. Básicamente tuve el mismo problema en el pasado e hice una herramienta para lograr dicha configuración de una manera simple. Ergo: https://github.com/cristianoliveira/ergoHe estado usando esto y, básicamente, funciona como un encanto :)
fuente
Un enfoque para implementar dos servidores web en el mismo host es hacer que ambos escuchen en el puerto 80 en dos direcciones IPv6 diferentes. IPv6 especifica oficialmente que puede asignar dos direcciones a una interfaz, y hay suficientes direcciones IPv6 para que pueda hacerlo sin quedarse sin direcciones.
Esto es una prueba futura, y sus dos dominios pueden tener registros AAAA que apuntan a las diferentes direcciones IP, por lo que los dominios terminan en diferentes servidores web.
Si también tiene una única dirección IPv4, puede usar el puerto 80 en la dirección IPv4 para ejecutar un proxy inverso. De esta forma, los clientes que solo utilizan IPv4 pueden acceder a sus servidores web. El enfoque de proxy inverso incluso funciona si algunos de los servidores web están en el mismo host que el proxy inverso y algunos de los servidores web están en otros hosts.
En tal configuración
example.org
podría tener direcciones192.0.2.1
y2001:db8::1
mientras queexample.net
tiene direcciones192.0.2.1
y2001:db8::2
.fuente