ฉันสงสัยว่า nginx สามารถจัดการคำขอ http และ https บนพอร์ตเดียวกันได้หรือไม่ [*]
นี่คือสิ่งที่ฉันพยายามจะทำ ฉันกำลังเรียกใช้เว็บเซิร์ฟเวอร์ (lighttpd) จัดการคำขอ http และโปรแกรม C ที่ให้บริการเฉพาะส่วนของแผนผังเอกสารผ่าน https กระบวนการทั้งสองนี้ทำงานบนเซิร์ฟเวอร์เดียวกัน
ที่ระดับไฟร์วอลล์ฉันสามารถมีพอร์ตเดียวที่ส่งต่อทราฟฟิกไปยังเซิร์ฟเวอร์นี้ได้ ดังนั้นสิ่งที่ฉันต้องการจะทำคือการตั้งค่า nginx บนเซิร์ฟเวอร์นี้เพื่อให้ฟังการร้องขอบนพอร์ตเดียวแล้ว:
A) เปลี่ยนเส้นทางคำขอhttp://myhost.com/ * ทั้งหมดเพื่อให้ไปที่ localhost: 8080 (โดยที่ lighttpd กำลังฟัง)
B) หากผู้ใช้ร้องขอ URL ที่ขึ้นต้นด้วยเช่น https: // myhost.com/app ก็จะส่งคำขอนั้นไปยัง localhost: 8008 (โปรแกรม C) โปรดทราบว่าในกรณีนี้การรับส่งข้อมูลระหว่างเบราว์เซอร์ระยะไกลและ nginx จะต้องได้รับการเข้ารหัส
คุณคิดว่าเป็นไปได้ไหม ถ้าเป็นเช่นนั้นจะทำอย่างไร?
ฉันรู้วิธีการใช้สองพอร์ตที่แตกต่างกัน ความท้าทายที่ฉันเผชิญทำด้วยพอร์ตเพียงพอร์ตเดียว (โชคไม่ดีที่ฉันไม่สามารถควบคุมการกำหนดค่าไฟร์วอลล์ในสภาพแวดล้อมนี้ได้ดังนั้นจึงเป็นข้อ จำกัด ที่ฉันไม่สามารถหลีกเลี่ยงได้) การใช้เทคนิคอย่าง reverse port fowarding ผ่าน ssh เพื่อข้ามไฟร์วอลล์จะไม่ทำงานเช่นนี้เพราะมันจะใช้ได้กับผู้ใช้ระยะไกลที่ไม่มีอะไรมากกว่าเว็บเบราว์เซอร์และลิงค์อินเทอร์เน็ต
หากเกินความสามารถของ nginx คุณรู้จักผลิตภัณฑ์อื่น ๆ ที่สามารถตอบสนองความต้องการนี้ได้หรือไม่? (จนถึงตอนนี้ฉันไม่ประสบความสำเร็จในการตั้งค่าด้วย lighttpd และปอนด์) ฉันยังต้องการหลีกเลี่ยง Apache (แม้ว่าฉันยินดีที่จะใช้หากเป็นทางเลือกเดียวที่เป็นไปได้)
ขอบคุณล่วงหน้าอเล็กซ์
[*] เพื่อความชัดเจนฉันกำลังพูดถึงการจัดการการเชื่อมต่อ HTTP ที่เข้ารหัสและไม่เข้ารหัสผ่านพอร์ตเดียวกัน ไม่สำคัญว่าการเข้ารหัสจะทำผ่าน SSL หรือ TLS