โดเมนที่กำหนดเองสำหรับ Node.js โฮสต์เว็บไซต์บนเครือข่ายส่วนตัว


3

ฉันมอบหมายการเรียนรู้ให้กับตัวเอง - สร้างเว็บไซต์ที่ดีที่จะโฮสต์จากเซิร์ฟเวอร์ Node.js ที่สามารถเข้าถึงได้จากเครือข่ายภายในบ้านของฉัน ระบบพื้นฐานของฉันใช้ Windows 7 และฉันต้องการให้โดเมนที่กำหนดเองเป็นเว็บไซต์เพื่อให้การเข้าถึงจากอุปกรณ์อื่นเป็นเรื่องง่าย

ฉันได้แก้ไขโฮสต์ของไฟล์ที่จะเพิ่มmydomainการ127.0.0.1- ตอนนี้http://mydomain:8080ทำงานบนเครื่องเดียวกัน แต่อุปกรณ์ที่แตกต่างกันไม่สามารถเข้าถึงได้ (เทียบเท่าlocalhostซึ่งทำให้รู้สึกว่าอุปกรณ์อื่น ๆ ที่ไม่สามารถใช้งานได้) ตอนนี้ฉันคิดว่าฉันอาจต้องการวิธีที่จะทำให้ที่อยู่ IP เครือข่ายของฉันคงที่จากนั้นจับคู่ IP นั้นกับ“ mydomain” ในไฟล์โฮสต์

นี่เป็นวิธีที่ดีที่สุดในการทำให้โดเมนที่กำหนดเองสามารถเข้าถึงได้หรือมีวิธีแก้ปัญหาโดยใช้ JavaScript ผ่าน Node.js / Express (framework) / HTTP ที่ฉันสามารถเก็บที่อยู่ IP ของฉันได้หรือไม่ ฉันได้อ่านเกี่ยวกับการใช้พร็อกซีแล้ว แต่นั่นอาจทำให้เกิดพฤติกรรมที่ไม่คาดคิดจากเซิร์ฟเวอร์ของฉัน

เป็นการดีที่ฉันไม่ต้องการพิมพ์พอร์ตด้วยและใช้บางอย่างเช่น http://mydomain

Node.js มีos.networkinterfaces()ให้ใช้งานแล้วซึ่งคุณสามารถทำซ้ำได้และส่งคืน IP เครือข่าย บางทีฉันแค่ต้องการแผนที่เครือข่าย IP กับโดเมนที่กำหนดเอง?


ฉันจะทำให้แน่ใจว่า 8080 เปิดอยู่ในคอมพิวเตอร์ที่เซิร์ฟเวอร์ตั้งอยู่จากนั้นแก้ไขไฟล์โฮสต์สำหรับอุปกรณ์แต่ละชิ้นในเครือข่ายของคุณที่คุณต้องการเข้าถึง (คุณสามารถทำได้บน iOS, Android, OSX และอื่น ๆ ) . การลบพอร์ตนั้นซับซ้อนกว่าเล็กน้อย แต่วิธีที่ง่ายที่สุดสำหรับคุณในการตั้งค่า node.js เพื่อฟังใน 80
Insane

ระบบปฏิบัติการหลัก / พื้นฐานของคุณคืออะไร หากคุณอยู่บน Linux ฉันมีความคิดบางอย่าง แต่ต้องการตรวจสอบให้แน่ใจว่าโซลูชันนั้นเหมาะสมกับความต้องการของคุณหรือไม่
JakeGould

ความคิดของฉันคือการใช้การตั้งค่าแบบหลายผู้รับ / zeroconfig เช่น Avahi daemon ซึ่งออกอากาศเป็นชื่อเครื่องท้องถิ่นของคุณไปยังเครือข่ายขนาดใหญ่ บางที Windows 7 มีบางอย่างเช่นนั้นอยู่แล้วและเราเตอร์ของคุณกำลังบล็อกการรับส่งข้อมูลแบบหลายผู้รับหรือไม่ แต่สำหรับระบบ Linux คุณสามารถติดตั้ง Avahi ได้โดยไม่มีการกำหนดค่าชื่อเครื่องของคุณจะสามารถเข้าถึงได้ทั่วทั้งเครือข่าย
JakeGould

คำตอบ:


2

ดังนั้นฉันเห็นวิธีแก้ปัญหาของคุณ:

  1. เราเตอร์ SOHO บางตัวมีความสามารถ DNS ที่คุณสามารถตั้งค่า ip ของคุณเป็นแบบคงที่สำหรับเครื่องของคุณและสร้างระเบียน DNS
  2. ระบบปฏิบัติการที่ทันสมัยส่วนใหญ่จะให้ที่.localอยู่ซึ่งจะmachinename.localอยู่ในเครือข่ายส่วนตัว จากนั้นคุณสามารถเรียกใช้ Node.js และใช้ที่.localอยู่เพื่อแก้ไขเครื่องโฮสต์

ในฐานะที่เป็นสำหรับการทำงาน Node.js พอร์ต 80 คุณควรเปลี่ยนฟังก์ชั่น.listen.listen(80)

var http = require('http');

http.createServer(function (req, res) {
 res.writeHead(200, {'Content-Type': 'text/plain'});
 res.end('Hello World\n');
}).listen(80, "127.0.0.1");

console.log('Server running at http://127.0.0.1:80/');

1
โปรโตคอล http ใช้พอร์ต 80 เป็นพอร์ตเริ่มต้น เมื่อคุณพิมพ์ ' mydomain ' จะถือว่าเซิร์ฟเวอร์อยู่ในพอร์ต 80 หากเว็บเซิร์ฟเวอร์ไม่ทำงานบนพอร์ต 80 คุณจะต้องระบุพอร์ต
Luke Farnell

จะเป็นอย่างไรถ้าฉันไปกับตัวเลือกที่ 2 - ฉันใช้ Windows 7 และฉันคิดว่ามันรองรับโดยที่ฉันไม่ต้องตั้งค่า ฉันติดอยู่กับเว็บไซต์ของฉันเป็น http: // <machinename>
.local

AFAIK นอกจากว่าคุณจะตั้งค่าเซิร์ฟเวอร์ DNS คุณจำเป็นต้องระบุที่อยู่ IP หรือที่อยู่. local ดังนั้นใช่คุณจะต้องติดกับชื่อโดเมนนั้น หากนี่คือคำตอบที่ถูกต้องโปรดทำเครื่องหมายว่าถูกต้อง
Luke Farnell

ควรเป็นดังนี้: app.listen (80, 127.0.0.1, function () {console.log ("======================"); <computername>. local จะใช้ได้เฉพาะในเบราว์เซอร์ไม่ใช่พารามิเตอร์สำหรับฟังก์ชั่นการฟัง
Luke Farnell

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