seguridad reglas puertos open microsoft management entrada abrir node.js ubuntu azure dns azure-virtual-machine

node.js - reglas - portal azure web



nodo que puerto/dirección IP para escuchar azure ubuntu vm (4)

Probablemente está escuchando en 127.0.0.1 o en el host local. Necesitas estar escuchando en 0.0.0.0 , para arreglar esto, reemplaza

server.listen(80);

con

server.listen(80, "0.0.0.0")

Solo para aclarar, 0.0.0.0 no es una dirección real, significa todas las direcciones, 127.0.0.1 y cualquier otra IP.

Tengo una máquina virtual Ubuntu en Azure. Agregué un enpoint en el portal de administración azul:

NAME PROTOCOL PUBLIC PORT PRIVATE PORT LOAD-BALANCED SET --------------------------------------------------------------- HTTP TCP 80 80 -

Y traté de escucharlo:

var http = require(''http''); var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello World/n"); }); server.listen(80);

Funciona si ssh in y curl it:

$ curl localhost:80 Hello World

Pero si trato de acceder a él por subdomain.cloudapp.net , nada vuelve. Tampoco devuelve nada cuando se accede por una dirección IP pública.

¿Qué puerto y dirección debo escuchar con mi aplicación de nodo para acceder desde el mundo exterior?

¿Necesito otro servicio azul para poder acceder a la VM?

¿Cómo habilitaría el acceso público si es un problema con el firewall?

Editar:

Verifiqué si había un firewall, pero no es así:

$ sudo ufw status [out :: subdomain.cloudapp.net] Status: inactive

Editar 2:

Aprovisionado un ubuntu vm diferente, pero todavía no funciona. Intenté reiniciar iptables, pero no se conocía ningún servicio:

$ sudo service iptables restart iptables: unrecognized service

Los iptables son:

$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:bootpc ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination


Con azul, debe usar la variable de entorno process.env.PORT para configurar el puerto. Si en el servidor local desea usar el 80, una buena manera de configurarlo en su código es como se recomienda aquí :

server.listen(process.env.PORT || 80);

Sin embargo, asegúrese de que si el firewall de Windows está configurado correctamente , ejecute una VM en Azure.


No sé qué pasa con tu muestra. Aquí está mi secuencia de pasos que funciona:

  1. Cree la instancia de Ubuntu Server 13.10 ''Extra Small'' en WestUS. (NUEVO-> Máquina virtual-> Creación rápida)
  2. Agregar punto final HTTP 80 -> 80 (Puntos finales-> Agregar-> Agregar nuevo punto extremo independiente-> HTTP, TCP, 80,80)
  3. Instale nodejs (sudo apt-get install nodejs). Esto instala la versión ''v0.10.15''
  4. Crea server.js con tu código.
  5. Inicie el servidor nodejs (sudo nodejs server.js)

Puedo conectarme de forma remota a través del nombre ndtest2.cloudapp.net (ya eliminado) y obtener "Hello World".

EDITAR: Sin embargo, no puedo conectarme a la versión creada a partir de las fuentes. Pero puedo conectarme si descargo binarios de http://nodejs.org


Creo que su puerto no permite la conexión remota en el puerto 80, ya que puede acceder a la máquina virtual de Ubuntu utilizando el túnel ssh desde el exterior. Prueba esta respuesta . Aunque está relacionado con Apache, pero este problema se parece y en realidad es idéntico. Probar esto.

Mientras tanto, mejor de las suertes. Dedos cruzados: p