ฉันจะบังคับให้ผู้ใช้แต่ละรายใช้หมายเลขพอร์ตเฉพาะหนึ่งหมายเลขใน Node.js ได้อย่างไร


0

ดังนั้นฉันจึงตั้งค่า NGINX เพื่อให้บริการเว็บไซต์คงที่ต่อผู้ใช้ใน GNU / Linux Debian 8 โดยใช้หลักการตั้งชื่อต่อไปนี้: http://domain/~username. เว็บโฟลเดอร์สาธารณะของผู้ใช้แต่ละคนจะอยู่ในโฮมไดเร็กตอรี่นั้น ๆ และนั่นก็เป็นที่ที่พวกเขาคาดหวังให้โครงการ Node.js ของพวกเขา

ปัญหา

ทั้งหมดนี้เป็นสิ่งที่ดีและดีอย่างไรฉันจะป้องกันผู้ใช้ที่แตกต่างจากการเริ่มต้นโครงการที่ใช้ หมายเลขพอร์ตชนกัน ในโดเมนเดียวกันหรือไม่ หรือมากกว่าโดยสังเขป ฉันจะบังคับให้ผู้ใช้แต่ละรายใช้หมายเลขพอร์ตเฉพาะหนึ่งหมายเลขใน Node.js ได้อย่างไร หรือฉันจำเป็นต้องมีแม้แต่? อินสแตนซ์ของ Node.js ของผู้ใช้สามารถถูกจับได้อย่างใดอย่างหนึ่งและจากนั้นแปลเป็นสิ่งที่ปฏิบัติตามอนุสัญญาการตั้งชื่อข้างต้น? ถ้าเป็นเช่นนั้นได้อย่างไร

ตัวอย่าง: หากผู้ใช้ JSmith สร้างเว็บไซต์โดยใช้ Node.js และเรียกใช้เว็บไซต์ควรเผยแพร่ให้ www.example.com/~jsmith ไม่ว่าการตั้งค่าโดเมนหรือพอร์ตอื่นใดที่ JSmith ใช้ในแอปพลิเคชัน Node.js ของเขา

คำตอบ:


0

โดยทั่วไปแล้ว Node.js ทำหน้าที่เป็นเซิร์ฟเวอร์ HTTP ของตัวเองใช่ไหม ดังนั้นหากพวกเขาดำเนินการโครงการ node.js ของพวกเขาบนเซิร์ฟเวอร์ Ubuntu เดียวกันและสมมติว่าพวกเขาไม่ได้มีสิทธิ์ของรูททั้งหมดพวกเขาจะเปิดพอร์ตฟัง TCP ในช่วงพอร์ตชั่วคราว (49152–65536) บน IP ของเซิร์ฟเวอร์นั้น ที่อยู่ (e) สแต็ก Linux ของ TCP / IP ของ Linux kernel จะทำให้แน่ใจได้ว่าไม่มีกระบวนการใดที่ใช้งานได้สองตัวที่สามารถเปิดพอร์ตเดียวกันได้ในเวลาเดียวกัน ในการเชื่อมต่อกับอินสแตนซ์ของแอป node.js พวกเขาจะต้องเชื่อมต่อกับ http://www.example.com:port/ (ในกรณีที่ ท่าเรือ เป็นพอร์ตอะไรที่พวกเขาสามารถเปิดได้)


ขอบคุณสำหรับการป้อนข้อมูล นั่นจะไม่ทำเศร้าเพราะมันจะถูกตีหรือพลาดสำหรับผู้ใช้ของฉันและที่สำคัญที่สุดสำหรับเซิร์ฟเวอร์ของฉัน ฉันสงสัยว่าถ้าไฟร์วอลล์ย้อนกลับอาจทำได้ด้วยพอร์ตที่ตั้งไว้ล่วงหน้าที่ไม่ซ้ำกันเปิดสำหรับผู้ใช้แต่ละรายสำหรับการใช้งานแบบ spesific ฉันอาจจะเพิ่งกลับพร็อกซี NGINX กับผู้ใช้ regex แม้ว่าฉันไม่แน่ใจว่าฉันจะกำหนดค่าให้มีพอร์ตผู้ใช้ spesific
Kebman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.