Cómo configurar el reenvío de puertos en Amazon EC2

16

Tengo una aplicación web ejecutándose en Amazon EC2. Escucha en el puerto 9898.

Puedo acceder ingresando la dirección IP y el número de puerto.

ej. 1.2.3.4:9898

Sin embargo, lo que realmente me gustaría poder hacer es no tener que ingresar el número de puerto.

Al investigar esto, parece que el reenvío de puertos podría ser la solución, es decir, reenviar solicitudes HTTP recibidas en el puerto predeterminado (80) a mi puerto no estándar (9898).

¿Es este el camino correcto? Si es así, ¿cómo configuro esto en EC2?

Si no, ¿cómo puedo lograr lo que quiero?

Gracias de antemano por cualquier ayuda.

Actualizar

Debería haber mencionado que la instancia EC2 es una AMI de Windows Server 2012.

ksl
fuente
Necesitaría tener algo delante de su servidor como HAProxy para reenviar solicitudes ... o usar iptables. Amazon no admite el reenvío de puertos.
Nathan C

Respuestas:

10

La forma más fácil de hacer esto sin instalar algo usted mismo es colocar un Amazon Elastic Load Balancer delante de la instancia. Estos le permiten reenviar puertos como lo desee.

ceejayoz
fuente
Intenté su sugerencia pero no puedo hacer que funcione la verificación de ping.
ksl
ceejayoz es correcto ELB es la forma de hacerlo. Utilice la verificación TCP si HTTP no funciona. Lo siento, no hay suficiente reputación para comentar.
Pestouille
Hola, por favor, ¿puedes dar más detalles?
ksl
Intente permitir ICMP en el servidor de seguridad de Windows Server desde las direcciones ELB
Tom O'Connor
El firewall ya está configurado de manera predeterminada para permitir todo el tráfico ICMP V4.
ksl
6

Tienes dos opciones.

1) Configure un proxy inverso para reenviar las solicitudes HTTP (suponiendo que sea HTTP) a un puerto diferente.

Debería ser tan simple como: Instalar apache, habilitar el módulo proxy_http, poner algo como:

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://localhost:9898/
ProxyPassReverse / http://localhost:9898/

2) Configurar tablas IP para reenviar los paquetes .

Tom O'Connor
fuente
Debería haber declarado que la instancia EC2 es una AMI de Windows Server 2012. No he podido averiguar cuál es el equivalente de Windows de IP Tables.
ksl
Gracias por la respuesta. Intenté usar netsh como sugirió, pero no puedo hacer que funcione. Reenvío las solicitudes http en el puerto 80 a las direcciones IP públicas y privadas de mi instancia EC2.
ksl
-3

porque vi el comentario sobre el uso de iptables, compartiré mi experiencia en ec2 linux. Encontré un excelente artículo sobre puertos de reenvío para Node.js. Si salta a las instrucciones sobre la edición de sysctl.conf, verá las instrucciones de reenvío. Mi procedimiento de Linux varió ligeramente de Ubuntu. El artículo es: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

El trabajo se realiza a través de ssh. El único inconveniente con el que me topé fue que realicé el enrutamiento dos veces, sin vaciar iptables entre ellas, y mi aplicación web no fue visible hasta que me volví y volví a cargar. Sé que es una imagen terrible para concluir, lo siento.

Brian
fuente