Amazon EC2でポート転送を設定する方法


16

Amazon EC2で実行しているウェブアプリケーションがあります。ポート9898でリッスンします。

IPアドレスとポート番号を入力してアクセスできます。

例1.2.3.4:9898

しかし、私が本当にできることは、ポート番号を入力する必要がないことです。

これを調査すると、ポートフォワーディングが解決策のようです。つまり、デフォルトポート(80)で受信したhttp要求を非標準ポート(9898)に転送します。

これは正しい方法ですか?その場合、これをEC2でどのように設定しますか?

そうでない場合、どうすれば自分が望むものを達成できますか?

助けてくれてありがとう。

更新

EC2インスタンスはWindows Server 2012 AMIであることに言及する必要がありました。


リクエストを転送するには、HAProxyのような何かをサーバーの前に置くか、iptablesを使用する必要があります。Amazonはポート転送をサポートしていません。
ネイサンC 14年

回答:


10

自分で何かをインストールせずにこれを行う最も簡単な方法は、インスタンスの前にAmazon Elastic Load Balancerを置くことです。これらにより、意図したとおりにポートを転送できます。


私はあなたの提案を試みましたが、pingチェックを機能させることができません。
ksl 14年

ceejayozは正しいですELBはそれを行う方法です。HTTPが機能していない場合は、TCPチェックを使用します。コメントするには評判が足りません。
ペストイユ14年

こんにちは、詳しく説明してください。
ksl 14年

ELBアドレス(複数可)からWindows Serverのファイアウォール上でICMPを許可してみてください
トム・オコナー

ファイアウォールは、すべてのICMP V4トラフィックを許可するようにデフォルトですでに設定されています。
KSL

6

2つのオプションがあります。

1)HTTPリクエストを(HTTPであると仮定して)別のポートに転送するリバースプロキシをセットアップします。

apacheをインストールし、proxy_httpモジュールを有効にして、次のようなものを配置します。

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

2)パケットを転送するIPテーブルをセットアップします


EC2インスタンスはWindows Server 2012 AMIであると述べたはずです。IP Tablesに相当するWindowsが何であるかを理解できていません。
ksl 14年


回答ありがとうございます。提案どおりnetshを使用してみましたが、動作しません。ポート80でhttp要求をEC2インスタンスのパブリックIPアドレスとプライベートIPアドレスの両方に転送しました。
KSL

-3

iptablesの使用に関するコメントを見たので、ec2 linuxでの経験を共有します。Node.jsの転送ポートに関する優れた記事を見つけました。sysctl.confの編集に関する指示にスキップすると、転送の指示が表示されます。私のLinuxの手順はUbuntuとは少し異なりました。記事:http : //www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

作業はsshを介して行われます。私が遭遇した唯一の落とし穴は、iptablesをフラッシュせずに2回事前にルーティングしたことであり、フラッシュしてリロードするまで私のウェブアプリは表示されませんでした。結論としては恐ろしいイメージです。ごめんなさい。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.