Como configurar o encaminhamento de porta no Amazon EC2

16

Eu tenho um aplicativo Web em execução no Amazon EC2. Ele escuta na porta 9898.

Eu posso acessá-lo inserindo o endereço IP e o número da porta.

por exemplo, 1.2.3.4:9898

No entanto, o que eu realmente gostaria de fazer é não precisar digitar o número da porta.

Pesquisando isso, parece que o encaminhamento de porta pode ser a solução - ou seja, encaminhar solicitações HTTP recebidas na porta padrão (80) para minha porta não padrão (9898).

Este é o caminho correto a seguir? Em caso afirmativo, como faço para configurar isso no EC2?

Caso contrário, como faço para conseguir o que quero?

Agradecemos antecipadamente por qualquer ajuda.

Atualizar

Eu deveria ter mencionado que a instância do EC2 é uma AMI do Windows Server 2012.

ksl
fonte
Você precisaria ter algo na frente do servidor, como o HAProxy, para encaminhar solicitações ... ou usar o iptables. A Amazon não suporta encaminhamento de porta.
Nathan C

Respostas:

10

A maneira mais fácil de fazer isso sem instalar algo é colocar um Amazon Elastic Load Balancer na frente da instância. Isso permite que você encaminhe portas como pretendido.

ceejayoz
fonte
Tentei sua sugestão, mas não consigo fazer com que a verificação de ping funcione.
ksl
ceejayoz está correto ELB é a maneira de fazê-lo. Use a verificação TCP se o HTTP não estiver funcionando. Desculpe, não há reputação suficiente para comentar.
Pestouille
Oi, por favor, você pode elaborar.
ksl
Tente permitir o ICMP no Firewall do Windows Server a partir dos endereços ELB
Tom O'Connor
O firewall já está configurado por padrão para permitir todo o tráfego ICMP V4.
ksl
6

Você tem duas opções.

1) Configure um proxy reverso para encaminhar as solicitações HTTP (assumindo que seja HTTP) para uma porta diferente.

Deve ser tão simples quanto: Instale o apache, ative o módulo proxy_http, coloque algo como:

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

2) Configure as tabelas de IP para encaminhar os pacotes .

Tom O'Connor
fonte
Eu deveria ter declarado que a instância do EC2 é uma AMI do Windows Server 2012. Não consegui descobrir qual é o equivalente do Windows às tabelas de IP.
ksl
Obrigado pela resposta. Tentei usar o netsh como você sugeriu, mas não consigo fazê-lo funcionar. Encaminhei solicitações http na porta 80 para os endereços IP públicos e privados da minha instância do EC2.
ksl
-3

porque vi o comentário sobre o uso do iptables, vou compartilhar minha experiência no ec2 linux. Encontrei um excelente artigo sobre o encaminhamento de portas para o Node.js. Se você pular as instruções para editar o sysctl.conf, verá as instruções de encaminhamento. Meu procedimento Linux variou ligeiramente do Ubuntu. Artigo é: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

O trabalho é feito via ssh. O único problema que encontrei foi o pré-roteamento duas vezes, sem liberar as tabelas de ip entre elas, e meu aplicativo da web não estava visível até que eu liberasse e recarregasse. Eu sei que é uma imagem terrível para concluir, desculpe.

Brian
fonte