Cara mengatur penerusan port di Amazon EC2

16

Saya memiliki aplikasi web yang berjalan di Amazon EC2. Ia mendengarkan pada port 9898.

Saya dapat mengaksesnya dengan memasukkan alamat ip dan nomor port.

misalnya 1.2.3.4:9898

Namun, yang ingin saya lakukan adalah tidak harus memasukkan nomor port.

Meneliti ini, sepertinya port forwarding mungkin solusinya - yaitu meneruskan permintaan http yang diterima pada port default (80) ke port non-standar saya (9898).

Apakah ini cara yang benar untuk pergi? Jika demikian, bagaimana cara mengatur ini di EC2?

Jika tidak, lalu bagaimana saya mencapai apa yang saya inginkan?

Terima kasih sebelumnya atas bantuannya.

Memperbarui

Saya seharusnya menyebutkan contoh EC2 adalah Windows Server 2012 AMI.

ksl
sumber
Anda harus memiliki sesuatu di depan server Anda seperti HAProxy untuk meneruskan permintaan..atau menggunakan iptables. Amazon tidak mendukung port forwarding.
Nathan C

Jawaban:

10

Cara termudah untuk melakukan ini tanpa menginstal sendiri sesuatu adalah meletakkan Amazon Elastic Load Balancer di depan instance. Ini memungkinkan Anda untuk meneruskan port sesuai keinginan Anda.

ceejayoz
sumber
Saya sudah mencoba saran Anda tetapi saya tidak bisa melakukan ping check.
ksl
ceejayoz benar ELB adalah cara untuk melakukannya. Gunakan pemeriksaan TCP jika HTTP tidak berfungsi. Maaf tidak cukup reputasi untuk berkomentar.
Pestouille
Hai, tolong bisa jelaskan.
ksl
Coba izinkan ICMP di Windows Server Firewall dari alamat ELB
Tom O'Connor
Firewall sudah dikonfigurasi secara default untuk memungkinkan semua lalu lintas ICMP V4.
ksl
6

Anda memiliki dua opsi.

1) Atur proxy terbalik untuk meneruskan permintaan HTTP (dengan asumsi itu HTTP) ke port lain.

Seharusnya sesederhana: Instal apache, aktifkan modul proxy_http, letakkan sesuatu seperti:

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

2) Mengatur Tabel IP untuk meneruskan paket .

Tom O'Connor
sumber
Saya seharusnya menyatakan bahwa contoh EC2 adalah Windows Server 2012 AMI. Saya belum bisa mengetahui apa yang setara dengan Windows dari Tabel IP.
ksl
Terima kasih atas tanggapannya. Saya mencoba menggunakan netsh seperti yang Anda sarankan tetapi saya tidak bisa membuatnya bekerja. Saya telah meneruskan permintaan http pada port 80 ke alamat ip publik dan pribadi dari instance EC2 saya.
ksl
-3

karena saya melihat komentar tentang menggunakan iptables, saya akan membagikan pengalaman saya di ec2 linux. Saya menemukan artikel yang bagus tentang penerusan porta untuk Node.js. Jika Anda melewatkan instruksi tentang pengeditan sysctl.conf Anda melihat instruksi penerusan. Prosedur Linux saya sedikit bervariasi dari Ubuntu. Artikelnya adalah: http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

Pekerjaan dilakukan melalui ssh. Satu-satunya gotcha yang saya temui adalah saya pre-routed dua kali, tanpa iptables flushing di antara, dan aplikasi web saya tidak terlihat sampai saya memerah dan mengisi ulang. Saya tahu itu gambar yang buruk untuk disimpulkan, maaf.

Brian
sumber