วิธีตั้งค่าการส่งต่อพอร์ตบน Amazon EC2


16

ฉันมีเว็บแอปพลิเคชันที่ทำงานบน Amazon EC2 มันฟังพอร์ต 9898

ฉันสามารถเข้าถึงได้โดยป้อนที่อยู่ IP และหมายเลขพอร์ต

เช่น 1.2.3.4:9898

อย่างไรก็ตามสิ่งที่ฉันอยากทำจริงๆคือไม่ต้องป้อนหมายเลขพอร์ต

การค้นคว้าสิ่งนี้ดูเหมือนว่าการส่งต่อพอร์ตอาจเป็นวิธีแก้ปัญหา - นั่นคือการร้องขอ HTTP ที่ได้รับในพอร์ตเริ่มต้น (80) ไปยังพอร์ตที่ไม่ได้มาตรฐานของฉัน (9898)

นี่เป็นวิธีที่ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นฉันจะตั้งค่านี้ใน EC2 ได้อย่างไร

ถ้าไม่เช่นนั้นฉันจะบรรลุสิ่งที่ฉันต้องการได้อย่างไร

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ

ปรับปรุง

ฉันควรได้กล่าวถึงอินสแตนซ์ EC2 เป็น Windows Server 2012 AMI


คุณต้องมีอะไรอยู่ข้างหน้าเซิร์ฟเวอร์ของคุณอย่าง HAProxy เพื่อส่งต่อคำขอ .. หรือใช้ iptables Amazon ไม่รองรับการส่งต่อพอร์ต
— นาธาน C

คำตอบ:


10

วิธีที่ง่ายที่สุดในการทำเช่นนี้โดยไม่ต้องติดตั้งอะไรเองก็คือใส่ Amazon Elastic Load Balancer ไว้หน้าอินสแตนซ์ สิ่งเหล่านี้ช่วยให้คุณสามารถส่งต่อพอร์ตได้ตามที่คุณต้องการ


ฉันลองใช้คำแนะนำของคุณ แต่ไม่สามารถรับการตรวจ ping ได้
— ksl

ceejayoz ถูกต้อง ELB เป็นวิธีที่จะทำ ใช้การตรวจสอบ TCP หาก HTTP ไม่ทำงาน ขออภัยชื่อเสียงไม่เพียงพอที่จะแสดงความคิดเห็น
— Pestouille

สวัสดีโปรดอธิบายให้ละเอียดหน่อยได้ไหม
— ksl

ลองอนุญาต ICMP บนไฟร์วอลล์เซิร์ฟเวอร์ Windows จากที่อยู่ ELB
— Tom O'Connor

ไฟร์วอลล์มีการกำหนดค่าไว้แล้วตามค่าเริ่มต้นเพื่ออนุญาตการรับส่งข้อมูล ICMP V4 ทั้งหมด
— ksl

6

คุณมีสองตัวเลือก

1) ตั้งค่า reverse proxy เพื่อส่งต่อคำขอ 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 ฉันไม่สามารถเข้าใจได้ว่า Windows Tables นั้นเทียบเท่ากับ IP ของ Windows ได้อย่างไร
— ksl


ขอบคุณสำหรับคำตอบ ฉันพยายามใช้เน็ตตามที่คุณแนะนำ แต่ไม่สามารถใช้งานได้ ฉันส่งต่อคำขอ HTTP ที่พอร์ต 80 ไปยังที่อยู่ IP สาธารณะและส่วนตัวของอินสแตนซ์ EC2 ของฉัน
— 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 gotcha เดียวที่ฉันพบคือฉันถูกกำหนดเส้นทางล่วงหน้าสองครั้งโดยไม่ต้องล้างข้อมูล iptables และเว็บแอปของฉันจะไม่ปรากฏจนกว่าฉันจะล้างและโหลดซ้ำ ฉันรู้ว่ามันเป็นภาพที่น่ากลัวที่จะสรุปด้วยขอโทษ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.