Comment configurer la redirection de port sur Amazon EC2

16

J'ai une application Web fonctionnant sur Amazon EC2. Il écoute sur le port 9898.

Je peux y accéder en entrant l'adresse IP et le numéro de port.

par exemple 1.2.3.4:9898

Cependant, ce que j'aimerais vraiment pouvoir faire, c'est de ne pas avoir à saisir le numéro de port.

En recherchant cela, il semble que la redirection de port pourrait être la solution - c'est-à-dire transférer les requêtes http reçues sur le port par défaut (80) vers mon port non standard (9898).

Est-ce la bonne façon de procéder? Si oui, comment puis-je configurer cela sur EC2?

Sinon, comment puis-je atteindre ce que je veux?

Merci d'avance pour votre aide.

Mise à jour

J'aurais dû mentionner que l'instance EC2 est une AMI Windows Server 2012.

ksl
la source
Vous auriez besoin d'avoir quelque chose en face de votre serveur comme HAProxy pour transférer les requêtes .. ou utiliser iptables. Amazon ne prend pas en charge la redirection de port.
Nathan C

Réponses:

10

La façon la plus simple de procéder sans installer quelque chose vous-même est de placer un Amazon Elastic Load Balancer devant l'instance. Ceux-ci vous permettent de transférer les ports comme vous le souhaitez.

ceejayoz
la source
J'ai essayé votre suggestion mais je n'arrive pas à faire fonctionner la vérification ping.
ksl
ceejayoz est correct ELB est la façon de le faire. Utilisez la vérification TCP si HTTP ne fonctionne pas. Désolé pas assez de réputation pour commenter.
Pestouille
Bonjour, pouvez-vous élaborer.
ksl
Essayez d'autoriser ICMP sur le pare-feu Windows Server à partir des adresses ELB
Tom O'Connor
Le pare-feu est déjà configuré par défaut pour autoriser tout le trafic ICMP V4.
ksl
6

Vous avez deux options.

1) Configurez un proxy inverse pour transférer les requêtes HTTP (en supposant que c'est HTTP) vers un autre port.

Cela devrait être aussi simple que: installer apache, activer le module proxy_http, mettre quelque chose comme:

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

2) Configurez les tables IP pour transférer les paquets .

Tom O'Connor
la source
J'aurais dû déclarer que l'instance EC2 est une AMI Windows Server 2012. Je n'ai pas pu comprendre quel est l'équivalent Windows des tables IP.
ksl
Merci pour la réponse. J'ai essayé d'utiliser netsh comme vous l'avez suggéré mais je n'arrive pas à le faire fonctionner. J'ai transféré des requêtes http sur le port 80 aux adresses IP publiques et privées de mon instance EC2.
ksl
-3

parce que j'ai vu le commentaire sur l'utilisation d'iptables, je vais partager mon expérience dans ec2 linux. J'ai trouvé un excellent article sur le transfert de ports pour Node.js. Si vous passez aux instructions de modification de sysctl.conf, vous voyez les instructions de transfert. Ma procédure Linux variait légèrement d'Ubuntu. L'article est: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Le travail se fait via ssh. Le seul problème que j'ai rencontré était que j'ai pré-acheminé deux fois, sans vider les iptables entre, et mon application Web n'était pas visible jusqu'à ce que je rince et recharge. Je sais que c'est une image terrible pour conclure, désolé.

Brian
la source