ความคาดหวัง/เป้าหมาย
- เรามีโดเมนเป็น (พูด) ตัวอย่าง.คอม ซื้อเมื่อ Google โดเมน และพีซีที่ทำงานด้วย windows 10 Pro
- เราตั้งใจที่จะทำให้พีซีนี้เป็นเซิร์ฟเวอร์สำหรับโฮสต์ 2 เว็บแอปของเรา แอป1 และ แอป2
ขณะนี้เราไม่ได้เป็นเจ้าของที่อยู่ IP แบบคงที่ ดังนั้นให้อ้างอิงที่อยู่สาธารณะเป็น: 192.0.2.0
- เว็บแอพพลิเคชั่น แอป1 และ แอป2 กำลังทำงานบน Tomcat ในฐานแอปและพอร์ตที่แยกจากกัน 8081 & 8082
- เราอยากวิ่ง แอป1 และ แอป2 บนโดเมนย่อย app1.example.com และ app2.example.com ตามลำดับ
นี่คือทุกสิ่งที่กำลังทำงานอยู่:
- แอปพลิเคชันบนเว็บที่ทำงานบนฐานแอปที่แยกจากกันใน Tomcat (v9) บนพอร์ตที่แยกจากกัน และสามารถเข้าถึงได้จากในเครื่องและจากอินทราเน็ต
- เว็บแอปพลิเคชันยังสามารถเข้าถึงได้จากอินเทอร์เน็ตด้วยการส่งต่อพอร์ตที่สำเร็จ (192.0.2.0:8081 และ 192.0.2.0:8082 โหลดสำเร็จ แอป1 และ แอป2 ตามลำดับ).
ปัญหา: โดเมน URL ถูกแทนที่ด้วยที่อยู่ IP สาธารณะ:
ตอนนี้การส่งต่อพอร์ตสำเร็จแล้ว ฉันลองส่งต่อโดเมน (ก่อนที่จะอ่านมากเกี่ยวกับการกำหนดค่า DNS ควรทำอย่างไร)
นี่คือวิธีที่ฉันส่งต่อโดเมน:
- ผมไปในส่วนของเว็บไซต์ (เว็บไซต์_section_cropped_screen_shot.png) มีการคลิกที่ เพิ่มที่อยู่สำหรับส่งต่อ(Add_a_forwarding_address_SS_cropped.png).
- จากนั้นในฟอร์มผลลัพธ์ กรอกกล่องข้อความที่มีป้ายกำกับ ส่งต่อจาก และ ส่งต่อไปยัง กับ app1.example.com และ 192.0.2.0:8081 ตามลำดับ
หลังจากทำสิ่งนี้แล้วที่อยู่ app1.example.com จะเปลี่ยนเส้นทางไปที่ แอป1 แต่ URL จะแทนที่ app1.example.com กับ 192.0.2.0:8081
จากนั้น ฉันอ่านบทความและบล็อกจำนวนมากที่บอกให้เพิ่มระเบียนประเภท A หรือระเบียนประเภท CNAME แต่ฉันไม่เข้าใจว่าต้องทำอย่างไร หรือต้องใช้ระเบียนใดบ้างเพื่อให้ทำงานได้อย่างถูกต้อง
ฉันลองใช้ชุดค่าผสม (ใน โดเมน ส่วน):
ชุดค่าผสม 1:
{ ชื่อโฮสต์=example.com, type=A, TTL=3600, ข้อมูล:192.0.2.0 }
{ ชื่อโฮสต์=app1.example.com, ประเภท=CNAME, TTL=3600, ข้อมูล:192.0.2.0:8081 }
ชุดค่าผสม 2:
{ ชื่อโฮสต์=app1.example.com, ประเภท=TXT, TTL=3600, ข้อมูล:192.0.2.0:8081 }
แต่ไม่มีใครทำงานและต่อมามันก็ไม่สมเหตุสมผลสำหรับฉัน
โปรดช่วยฉันในเรื่องนี้ ฉันไม่มีประสบการณ์ในการตั้งค่า DNS สำหรับเว็บไซต์และ/หรือสิ่งอื่นใดที่จำเป็นเพื่อให้เป็นไปตามความคาดหวังข้างต้น
อัปเดต
ขอบคุณ @fvu ฉันสามารถเริ่มต้นกับ nginx กำหนดค่าในเครื่องซึ่งใช้งานได้และเข้าใจวิธีการทำงานของพร็อกซีเซิร์ฟเวอร์ (รวมถึงสถานการณ์กรณีที่ดีที่สุดเท่านั้น)
ตอนนี้มีปัญหาอื่น ฉันไม่สามารถเปิดพอร์ต 80 บนเครื่องเซิร์ฟเวอร์ได้สำเร็จ
ฉันลองและทดสอบทุกอย่าง:
- nginx ประสบความสำเร็จในการเริ่มต้นและทำงานบนพอร์ต 80 โดยนัยว่า 80 ไม่ถูกบล็อกโดยกระบวนการอื่นใด
- พอร์ตอื่นๆ ทั้งหมดได้รับการส่งต่อพอร์ตอย่างถูกต้อง แต่พอร์ต 80 ไม่แสดงการตรวจสอบที่เปิดอยู่ในไซต์ตรวจสอบพอร์ตหลายแห่ง (ส่วนใหญ่อยู่ใน portchecker.co)
- เพื่อตรวจสอบสิ่งที่เกิดขึ้น ฉันแก้ไขการตั้งค่าไฟร์วอลล์เพื่อเพิ่มกฎและเริ่มบันทึก ALLOWED เช่นเดียวกับแพ็กเก็ต DENIED สำหรับโปรไฟล์ทั้งหมด (โดเมน สาธารณะ และส่วนตัว)
- ในบันทึกฉันเห็นว่ามีบางคำขอสำหรับพอร์ต 443 ฉันสงสัยว่าคำขอในพอร์ต 80 ถูกแปลงเป็น 443 หรือไม่ แต่ไม่ทราบแน่ชัด เป็นไปได้ไหม?
- มีคำขอจำนวนมากบนพอร์ต 80 ที่ได้รับอนุญาต แต่ยังคงแสดงพอร์ต 80 ว่าปิดอยู่ในไซต์ตัวตรวจสอบพอร์ต
ตอนนี้ฉันจะต้องแก้ไขปัญหา port-80-not-opening หรือเปลี่ยนพอร์ต nginx เป็นอย่างอื่นที่ไม่ใช่ 80
แต่ถ้าพอร์ตมีการเปลี่ยนแปลง ฉันจะต้องถูกกล่าวถึงในที่ใดที่หนึ่ง เช่น ในระเบียน DNS เป็นต้น ซึ่งค่อนข้างไม่ชัดเจนสำหรับฉัน
ฉันคิดว่าบางทีในเราเตอร์ฉันสามารถส่งต่อพอร์ต 80 ถึง 81 และให้ nginx ทำงานบน 81 หรือมากกว่านั้น แต่ฉันต้องลองดูก่อน
ในขณะเดียวกันถ้าคุณสามารถบอกฉันบางอย่างเกี่ยวกับวิธีจัดการ reverse proxy โดยใช้ nginx ที่ทำงานบนพอร์ตอื่นที่ไม่ใช่ 80
[ฉันเร่งรีบ ดังนั้นอาจมีการพิมพ์ผิดหรือมีรายละเอียดน้อย โปรดสอบถามหากจำเป็น!]