Servidor web GoLang - Acceso externo - Problema con el puerto - ¿Cómo servir en el puerto 9003 (o cualquier otro)?

Servidor web GoLang - Acceso externo - Problema con el puerto - ¿Cómo servir en el puerto 9003 (o cualquier otro)?

¿Cómo servir en el puerto 9003 (o cualquier otro)?

Tengo un servidor web Apache que se ejecuta en un VPS (ubuntu 16). De serie se ejecuta en el puerto 80. Si lo intento a través del navegador:

http://104.XXX.YYY.237

Funciona muy bien. (Tengo una aplicación php/mysql completa ejecutándose)

.....

Ahora, quiero ofrecer una API REST pública, creada con Golang, en el puerto 9003 (o lo que sea)

Entonces tengo en mi archivo main.go

func main() {

    router := NewRouter()

    log.Fatal(http.ListenAndServe(":9003", router))
}

Cuando intento acceder a:

http://104.XXX.YYY.237:9003

No recibo ninguna respuesta.

...

Tengo una configuración similar ejecutándose en mi host local, donde puedo acceder con éxito a través de terminal, curl, navegador o ajax a una dirección comohttp://localhost:9003

Entonces, no hay ningún problema con mi API.

...

Sé muy poco sobre Linux y la configuración del servidor, así que, investigando un poco al respecto, ¡podría pensar que el problema puede ser el puerto 9003! Para probar esa conclusión, detuve el servicio Apache, cambié el puerto de la API a 80 y ¡!! ¡¡¡BINGO!!! funcionó ! Pude acceder a mi API usando mi navegador.

...

Un poco más de investigación y encontré este (maravilloso) comando de Linux:

netstat-vatn

lo que me dio la respuesta: (bajo mi configuración original restaurada)

tcp6 0 0 :::9003 :::* LISTEN

tcp6 0 0 :::80 :::* LISTEN

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 104.XXX.YYY.237:80 177.XX.YYY.243:4297 TIME_WAIT

No soy un experto en Linux, pero la primera línea me dice que el puerto 9003 está abierto y listo para usarse, al igual que el 80 y el 22.

Pero la última línea me dice que el servidor escucha 104.XXX.YYY.237:80.

Así que me falta una línea. Concluyo que debería esperar algo como:

tcp6 0 0 104.XXX.YYY.237:9003 177.YY.XXX.243:4297 TIME_WAIT

Así que aquí mis preguntas:

_ ¿Cómo puedo proporcionar acceso externo a mi API usando la dirección IP de mi VPS (o más tarde mi dominio) usando el puerto dado? _ ¿Dije algo equivocado sobre mis conclusiones?

gracias de antemano

Respuesta1

¡Logré solucionar el problema y permitir la conexión externa directamente a mi API en el puerto 9003!

Para lograrlo, edité las reglas del firewall en el panel de control de mi proveedor de VPS.

Aunque realmente me gustaría aprender a hacerlo mediante la terminal.

información relacionada