เปลี่ยนเส้นทางพอร์ตผ่าน iptables บนอินสแตนซ์ AWS EC2 Ubuntu

ฉันมีอินสแตนซ์ AWS EC2 ที่ทำงานอยู่บนเครื่อง Ubuntu ที่ใช้งานเซิร์ฟเวอร์ Nodejs ทุกอย่างทำงานได้ดีจากนั้นเปิดเว็บไซต์ผ่าน IP สาธารณะบนพอร์ต 3000 เช่นนี้:

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

ตอนนี้ฉันต้องการเปลี่ยนเส้นทางคำขอทั้งหมดจากพอร์ต 80 ไปยังพอร์ต 3000 นี้ผ่าน iptables ตามที่อธิบายไว้ในวิดีโอนี้: https://www.youtube.com/watch?v=WxhFq64FQzA ทาง

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

ขออภัย ฉันได้รับข้อผิดพลาดนี้: http://prntscr.com/lja6hx เมื่อเปิดไซต์เช่นนี้: http://XX.XXX.XXX.XXX (ไม่ระบุพอร์ต 3000)

ป.ล. : ฉันไม่แน่ใจจริงๆว่าแนวทางของฉันถูกต้องหรือไม่ ฉันเปิดรับวิธีอื่นในการเปลี่ยนเส้นทางจากพอร์ต 80 (http) ไปยังพอร์ต 3000


ตามที่ @Vorsprung แนะนำฉันควรใช้ Application Load Balancer ฉันทำสิ่งนี้แล้ว แต่ก็ยังใช้งานไม่ได้ นี่คือการตั้งค่าของฉัน:

ตัวฟังโหลดบาลานเซอร์แอปพลิเคชันของฉัน ตัวฟังบาลานเซอร์โหลดแอปพลิเคชัน

กลุ่มเป้าหมายที่ฉันกำลังส่งต่อใน ALB ของฉัน คำอธิบายกลุ่มเป้าหมาย เป้าหมายกลุ่มเป้าหมาย

โซนที่โฮสต์ของฉัน (ฉันได้เพิ่มนามแฝงสำหรับ ALB ที่นี่) บันทึกโซน A ที่โฮสต์

โปรดแจ้งให้เราทราบหากมีบางอย่างหายไป


person Florian Ludewig    schedule 16.11.2018    source แหล่งที่มา
comment
คุณใช้ Framework (Express?) สำหรับเซิร์ฟเวอร์ Node ของคุณหรือไม่? หากเป็นเช่นนั้น คุณสามารถสั่งให้มันฟังบนพอร์ต 80 แทนที่จะเป็นพอร์ต 3000 ไม่จำเป็นต้องเปลี่ยนเส้นทาง ตัวอย่าง: expressjs.com/en/starter/hello-world.html   -  person Ben Whaley    schedule 16.11.2018
comment
หากต้องการทำงานบนพอร์ต 80 คุณจะต้องเรียกใช้ในฐานะผู้ใช้ที่มีสิทธิ์ ลองนำหน้าคำสั่งของคุณด้วย "sudo"   -  person Ben Whaley    schedule 17.11.2018
comment
ฉันได้ลองสิ่งนี้แล้ว แต่ยังคงได้รับข้อผิดพลาดต่อไปนี้: prntscr.com/ljfkb1   -  person Florian Ludewig    schedule 17.11.2018
comment
เปิดการประเมินความสมบูรณ์และให้แน่ใจว่าคุณมี GET url ที่เพิ่งส่งคืน 200 จากนั้นคุณจะเห็นว่า ALB สามารถมองเห็น EC2 ได้หรือไม่ โดยปกติฉันจะไม่ใช้ IP สาธารณะบน EC2 สำหรับการสื่อสาร ALB->EC2 ฉันจะใช้ที่อยู่ VPC ส่วนตัว แต่ถ้าคุณทำเช่นนี้ ตรวจสอบให้แน่ใจว่า มีกฎกลุ่มความปลอดภัยที่อนุญาต ALB   -  person Vorsprung    schedule 17.11.2018


คำตอบ (1)


  1. ใช้ nginx ดู https://nodebb.readthedocs.io/en/latest/configuring/proxies/nginx.html หรือ
  2. คุณอยู่บน AWS! ใช้ ALB.. โปรดดู https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancer-tutorials.html
person Vorsprung    schedule 16.11.2018
comment
ฉันได้ลองตั้งค่า ALB แล้ว แต่ก็ยังใช้งานไม่ได้ (ฉันเพิ่มรายละเอียดเพิ่มเติมให้กับคำถามของฉัน) - person Florian Ludewig; 16.11.2018