Redirect Port melalui iptables pada instans Ubuntu AWS EC2

Saya memiliki instance AWS EC2 yang berjalan di mesin Ubuntu yang menjalankan server Nodejs. Semuanya berfungsi dengan baik kemudian membuka situs web melalui ip publiknya pada port 3000 seperti ini:

http://XX.XXX.XXX.XXX:3000

Sekarang saya ingin mengalihkan semua permintaan dari port 80 ke port 3000 ini melalui iptables seperti yang dijelaskan dalam video ini: https://www.youtube.com/watch?v=WxhFq64FQzA melalui

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000.

Sayangnya saya mendapatkan kesalahan ini: http://prntscr.com/lja6hx saat membuka situs seperti ini: http://XX.XXX.XXX.XXX (tanpa port 3000 ditentukan)

P.S.: Saya tidak begitu yakin apakah pendekatan saya benar. Saya terbuka untuk cara lain untuk mencapai pengalihan dari port 80 (http) ke port 3000


Seperti yang disarankan @Vorsprung, saya harus menggunakan Application Load Balancer. Saya melakukan ini tetapi masih tidak berhasil. Ini pengaturan saya:

Pendengar Penyeimbang Beban Aplikasi Saya Pemroses Penyeimbang Beban Aplikasi

Grup Target yang saya teruskan di ALB saya Deskripsi Grup Target Target Grup Sasaran

Zona yang saya host (saya telah menambahkan alias untuk ALB di sini) Catatan zona A yang dihosting

Tolong beri tahu saya jika ada sesuatu yang hilang


person Florian Ludewig    schedule 16.11.2018    source sumber
comment
Apakah Anda menggunakan Framework (Express?) untuk server Node Anda? Jika demikian, Anda cukup menginstruksikannya untuk mendengarkan pada port 80 daripada port 3000. Tidak diperlukan pengalihan. Contoh: expressjs.com/en/starter/hello-world.html   -  person Ben Whaley    schedule 16.11.2018
comment
Untuk berjalan pada port 80, Anda harus menjalankannya sebagai pengguna yang memiliki hak istimewa. Coba awali perintah Anda dengan "sudo"   -  person Ben Whaley    schedule 17.11.2018
comment
Saya sebenarnya sudah mencobanya, namun saya masih mendapatkan kesalahan berikut: prntscr.com/ljfkb1   -  person Florian Ludewig    schedule 17.11.2018
comment
Aktifkan evaluasi kesehatan dan pastikan Anda memiliki url GET yang hanya menghasilkan 200. Kemudian Anda dapat melihat apakah ALB dapat melihat EC2. Saya biasanya tidak menggunakan ip publik di EC2 untuk komunikasi ALB-›EC2, saya akan menggunakan alamat VPC pribadi. Namun jika Anda melakukan ini maka pastikan ada aturan grup keamanan yang mengizinkan ALB   -  person Vorsprung    schedule 17.11.2018


Jawaban (1)


  1. baik menggunakan nginx, lihat https://nodebb.readthedocs.io/en/latest/configuring/proxies/nginx.html atau
  2. Anda berada di AWS! Gunakan ALB.. lihat https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancer-tutorials.html
person Vorsprung    schedule 16.11.2018
comment
Saya sudah mencoba menyiapkan ALB tetapi masih tidak berfungsi (saya menambahkan detail lebih lanjut ke pertanyaan saya) - person Florian Ludewig; 16.11.2018