Tengo una dirección IP pública, un enrutador y varios servidores detrás del enrutador.
Me gustaría reenviar diferentes dominios (todos usando HTTP) a través del enrutador a diferentes servidores.
Por ejemplo:
example1.com => 192.168.0.110
example2.com => 192.168.0.120
foo.example2.com => 192.168.0.130
bar.example2.com => 192.168.0.140
Entiendo que esto podría lograrse mediante el reenvío de puertos, pero necesito que todos los hosts se ejecuten en el puerto 80.
Encontré información sobre IP Masquerading, pero me resultó difícil de entender y no estoy seguro de si es lo que busco.
Otra solución que encontré es dirigir todo el tráfico al servidor proxy inverso, que reenvía las solicitudes al servidor apropiado. ¿Qué pasa con iptables?
Estoy usando un enrutador VNPX Billion 7404. ¿Hay alguna característica que tenga este enrutador que pueda lograr esto?
¿Son estas mis únicas opciones? ¿Me he perdido algo por completo? ¿Se recomienda uno sobre los demás?
He buscado por ahí pero no creo encontrar las palabras clave correctas.
Respuesta1
La mejor solución sería utilizar un proxy inverso HTTP. Para esto puedes usar:
Estamos usando apache con mod_proxy, pero estoy pensando en usar libra.
Como dispositivo de hardware, puede utilizar un conmutador de servicio de contenido de Cisco. Ver:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html
Respuesta2
He tenido una idea y me gustaría saber si alguien tiene algún comentario al respecto.
Si utilizo la idea del proxy inverso, creo que puedo resolver el problema de forma muy sencilla. Ya estoy usando Nginx en los otros servidores, por lo que este es mi servidor preferido para un proxy inverso.
En el enrutador, reenviaré todas las conexiones entrantes en el puerto 80 a mi servidor de proxy inverso. Tendré Nginx ejecutándose en este servidor con el siguiente archivo de configuración:
server {
listen *:80;
location / {
proxy_pass http://$host;
}
}
Lo que esto parece hacer es enviar la solicitud al mismo host. Pero aquí está el truco: en mi archivo /etc/hosts asignaré todos los dominios a sus IP internas.
182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com
Entonces el servidor proxy inverso enrutará el host solicitado al mismo host, pero en este puntodeberíabusque el archivo de hosts locales y asígnelo a la dirección IP interna. También significa que puedo "configurar y olvidar" el archivo de configuración de Nginx.
Un problema potencial es que si no se ha configurado un nombre de host local, el proxy inverso enviará la solicitud nuevamente a Internet. Sin embargo, creo que NAT evitará que esto se quede atrapado en un bucle infinito.
Esta solución parece funcionar en mi cabeza y en el papel, pero no podré configurarla por un tiempo.
¿Alguien puede ver alguna razón por la que esto no funcione?
Gracias.