
Me propuse una tarea de aprendizaje: crear un buen sitio web para alojarlo desde un servidor Node.js accesible a mi red doméstica. Mi sistema base ejecuta Windows 7 y quiero darle a este sitio web un dominio personalizado, para que sea fácil acceder a él desde otros dispositivos.
He editado mi archivo host para agregarlo mydomain
; 127.0.0.1
ahora http://mydomain:8080
funciona en la misma máquina, pero diferentes dispositivos no pueden acceder a él (equivalente a localhost
, lo que tiene sentido que otros dispositivos no puedan usarlo). Ahora estoy pensando que podría necesitar una manera de hacer que la dirección IP de mi red sea estática y luego asignar esa IP a "midominio" en el archivo host.
¿Es esta la mejor manera de hacer accesible un dominio personalizado o existe una solución que utiliza JavaScript a través de Node.js/Express (framework)/HTTP donde puedo mantener mi dirección IP dinámica? He leído sobre el uso de servidores proxy, pero ¿podría eso generar un comportamiento inesperado en mi servidor?
Idealmente, preferiría no tener que escribir el puerto tampoco y simplemente usar algo comohttp://mydomain
Node.js tiene os.networkinterfaces()
disponible, que puede recorrer y devolver la IP de la red. ¿Quizás solo necesito una forma de asignar la IP de la red a un dominio personalizado?
Respuesta1
Entonces veo algunas soluciones a su problema:
- Algunos enrutadores SOHO brindan capacidad DNS en la que puede configurar su IP como estática para su máquina y crear un registro DNS.
- La mayoría de los sistemas operativos modernos proporcionan
.local
una dirección que estaríamachinename.local
dentro de la red privada. Luego podrías ejecutar Node.js y usar la.local
dirección para resolverla en la máquina anfitriona.
En cuanto a ejecutar Node.js en el puerto 80, debes cambiar tu .listen
función a .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/');