ฉันอยู่ในสถานการณ์ที่ผิดปกติมากและฉันใช้เวลาเกือบ 8 ชั่วโมงในการพยายามค้นหาว่าปัญหาคืออะไร
การตั้งค่า
ฉันมีเซิร์ฟเวอร์ที่ใช้ Debian 11 ภายในเซิร์ฟเวอร์นี้ ฉันมีการติดตั้งเครื่องเสมือน CentOS ด้วย KVM เครื่องเสมือนโฮสต์เว็บแอปพลิเคชันที่ซับซ้อนซึ่งอยู่เบื้องหลังเซิร์ฟเวอร์ Apache อินเทอร์เฟซเครือข่ายของ KVM คือ NAT ดังนั้นเพื่อเข้าถึงเว็บแอปพลิเคชัน ฉันได้ตั้งค่ากฎการส่งต่อพอร์ตโดยใช้ libvirt
ตะขอตามที่อธิบายไว้ที่นี่:
https://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections
การตั้งค่าของฉันส่งต่อการเชื่อมต่อขาเข้าไปยังพอร์ต 443 ไปยังเซิร์ฟเวอร์ Apache บนเครื่องเสมือน และวิธีนี้ใช้ได้ดี
ฉันยังได้ตั้งค่าเซิร์ฟเวอร์ Nginx บนเครื่องโฮสต์เนื่องจากฉันตั้งใจจะใช้เป็นพร็อกซีย้อนกลับ ฉันจะโฮสต์แอปพลิเคชันอื่นบนเซิร์ฟเวอร์โฮสต์บนพอร์ต 9000 โดยใช้ Nginx สำหรับ reverse proxy ฉันวางแผนที่จะเปลี่ยนเส้นทางคำขอทั้งหมดไปที่ https://example.com
ไปยังเครื่องเสมือนและคำขอทั้งหมดไปยัง https://example.com/app/
ไปยังเว็บแอปพลิเคชันที่ทำงานบนพอร์ต 9000
ปัญหา
ฉันติดตั้งเซิร์ฟเวอร์ Nginx หลังจากตั้งค่าเครื่องเสมือนและกฎการส่งต่อพอร์ตที่เกี่ยวข้อง แต่เมื่อฉันพยายามเรียกใช้หน้าเริ่มต้นของเซิร์ฟเวอร์ Nginx ไม่สามารถเข้าถึงได้ ฉันเข้าใจว่าพอร์ต 443 ได้รับการส่งต่อไปยัง VM ก็เลยลองโหลดดู http://example.com
คาดหวังว่าจะโหลดหน้าเริ่มต้นของ Nginx บนพอร์ต 80 แต่มันก็บอกว่าไม่สามารถเข้าถึงเว็บไซต์ได้
สิ่งที่ฉันได้ลองไปแล้ว?
ฉันสงสัยว่ากฎการส่งต่อพอร์ตจากโฮสต์ไปยังแขกอาจเป็นสาเหตุหลักที่นี่ ดังนั้นฉันจึงเปลี่ยนกฎการส่งต่อพอร์ตจากพอร์ต 443 เป็น 8000 ดังนั้นคำขอใด ๆ ที่ไปยังพอร์ต 8000 จะถูกส่งต่อไปยังเซิร์ฟเวอร์ Apache บน VM แต่หลังจากทำเช่นนี้ พอร์ต 443 ก็ไม่สามารถเข้าถึงได้เช่นกัน
ฉันพยายามล้าง iptables อย่างสมบูรณ์ตามที่อธิบายไว้ที่นี่:
ล้างและรีเซ็ต iptables ใน Debian
แต่ถึงกระนั้นเซิร์ฟเวอร์ Nginx ยังไม่สามารถเข้าถึงได้
นอกจากนี้ หลังจากล้าง iptables แล้ว เมื่อฉันพยายามเข้าถึงแอปพลิเคชันที่ทำงานบนพอร์ต 9000 ด้วย http://example.com:9000
ฉันได้รับ ข้อผิดพลาด 400 คำขอไม่ถูกต้อง
และเมื่อฉันเปลี่ยนโปรโตคอลเป็น https
หน้าจะไม่สามารถเข้าถึงได้
คำแนะนำใด ๆ จะเป็นประโยชน์มาก ขอขอบคุณ.