Score:0

Nginx ส่งต่อการรับส่งข้อมูลทั้งหมดในทุกพอร์ตยกเว้นพอร์ต 80

ธง ru

สมมติว่าฉันมีชื่อโดเมน ตัวอย่าง.คอม ลงทะเบียนใน 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)

djdomi avatar
za flag
offtopic: คำถามเกี่ยวกับ Server Fault จะต้องเกี่ยวกับการจัดการระบบเทคโนโลยีสารสนเทศในสภาพแวดล้อมทางธุรกิจ อาจมีคำถามเกี่ยวกับคอมพิวเตอร์ที่บ้านและผู้ใช้ปลายทางใน Super User
us flag
คุณไม่ควรใช้ FTP เนื่องจากเป็นความเสี่ยงด้านความปลอดภัย
Denes Garda avatar
ru flag
@TeroKilkanen ทำไมถึงพูดถึงอย่างนั้น? ในคำถามของฉัน เซิร์ฟเวอร์ FTP เป็นเพียงตัวอย่างเท่านั้น ความคิดเห็นนอกหัวข้อ
us flag
การให้คำแนะนำด้านความปลอดภัยที่มั่นคงอยู่ในหัวข้อเสมอ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา