สมมติว่าฉันมีชื่อโดเมน ตัวอย่าง.คอม
ลงทะเบียนใน Dynadot ฉันมีมันพร้อมกับโดเมนย่อย www.example.com
และ คลาวด์.example.com
ชี้ไปที่ที่อยู่ IP ของฉันผ่านระเบียน A ฉันได้ตั้งค่าเซิร์ฟเวอร์บางตัวที่สามารถเข้าถึงได้โดยใช้ชื่อโดเมนนี้ ตัวอย่างเช่น เซิร์ฟเวอร์ FTP ของฉันสามารถเข้าถึงได้โดยใช้ ตัวอย่าง.com:21
. ฉันมีเซิร์ฟเวอร์ Node.js ที่ทำงานบนพอร์ต 80 และ เน็กซ์คลาวด์ เซิร์ฟเวอร์ที่ทำงานบนพอร์ต 85 สิ่งสุดท้ายที่ฉันได้ตั้งค่าคือเซิร์ฟเวอร์ Nginx ซึ่งรับฟังพอร์ต 80 นี่คือการกำหนดค่า Nginx ของฉัน:
เซิร์ฟเวอร์ {
ฟัง 80;
server_name cloud.example.com;
ที่ตั้ง / {
proxy_pass http://example.com:85;
}
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name www.example.com;
ที่ตั้ง / {
proxy_pass http://192.168.1.31;
}
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name example.com;
ที่ตั้ง / {
proxy_pass http://192.168.1.31;
}
}
การกำหนดค่านี้ทำอะไรบ้าง:
หากผู้ใช้ไปที่ ตัวอย่าง.คอม
หรือ www.example.com
มันเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ Node.js ของฉัน
หากผู้ใช้ไปที่ คลาวด์.example.com
มันเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ Nextcloud ของฉัน ซึ่งสามารถเข้าถึงได้จาก ตัวอย่าง.com:85
.
หากผู้ใช้ต้องการเชื่อมต่อกับเซิร์ฟเวอร์อื่นที่ทำงานบนพอร์ตอื่น ก็สามารถใช้ได้ example.com:<พอร์ต>
มันใช้งานได้ดี แต่ปัญหาเดียวของฉันก็คือ ISP ของฉันบล็อกการรับส่งข้อมูลขาเข้าสำหรับพอร์ต 80!
ฉันพยายามหาวิธีแก้ปัญหามาหลายชั่วโมงแล้ว และทางเลือกเดียวของฉันคือใช้ GoDaddy ฉันสามารถโฮสต์เซิร์ฟเวอร์ Nginx ของฉันบน GoDaddy ได้ ซึ่งประเด็นนี้ ตัวอย่าง.คอม
และ www.example.com
ไปยังเซิร์ฟเวอร์และคะแนน Node.js ของฉัน คลาวด์.example.com
ไปยังเซิร์ฟเวอร์ Nextcloud ของฉัน สิ่งนี้จะใช้ได้ แต่มันหมายความว่า ตัวอย่าง.คอม
การตั้งค่า DNS ของจะต้องเปลี่ยนเป็นระเบียน A ที่ชี้ไปยังเซิร์ฟเวอร์ GoDaddy ทั้งหมดนี้ใช้งานได้ดี แต่หมายความว่าฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์อื่น ๆ ของฉันได้อีกต่อไป เช่น เซิร์ฟเวอร์ FTP ของฉันเพราะ ตัวอย่าง.com:21
จะไม่ชี้ไปที่ <my IP>:21
, แต่ < IP ของเซิร์ฟเวอร์ GoDaddy >:21
.
ฉันคิดว่าเพื่อแก้ปัญหานี้ ฉันสามารถกำหนดค่าเซิร์ฟเวอร์ Nginx ของฉันให้ทำงานเหมือนที่เคยทำมา แต่ถ้าผู้ใช้ไปที่ ตัวอย่าง.คอม
ด้วยพอร์ตใด ๆ นอกเหนือจากพอร์ต 80 มันจะส่งต่อการเชื่อมต่อไปยัง <my IP>:<port>
. ด้วยวิธีนี้ เซิร์ฟเวอร์อื่นๆ ทั้งหมดของฉัน เช่น เซิร์ฟเวอร์ FTP ของฉันจะยังคงสามารถเข้าถึงได้ผ่าน ตัวอย่าง.com:21
แต่พอร์ต 80 จะไม่ถูกบล็อก เนื่องจากเซิร์ฟเวอร์ Nginx ที่ใช้พอร์ต 80 กำลังโฮสต์อยู่บน GoDaddy
ฉันไม่รู้ว่าสิ่งนี้เป็นไปได้กับ Nginx หรือไม่ถ้าเป็นเช่นนั้นการกำหนดค่าจะมีลักษณะอย่างไร ถ้าไม่ใช่ ฉันมีทางเลือกอะไรอีกบ้าง? (นอกเหนือจากการซื้อแผนธุรกิจของ ISP เพื่อปลดบล็อกพอร์ต 80)