วิธีตั้งค่าการส่งต่อพอร์ตบน 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.