Los desarrolladores web casi siempre hace uso de «localhost» o lo que significa un entorno de prueba local, esto independientemente del lenguaje (JSP, ASP, PHP etcétera). Y en diversas ocasiones, es necesario mostrar a un colega o un cliente nuestro progreso o incluso probarlo usando herramientas de prueba en línea como browserstack.
Si es un proyecto pequeño o si eres un freelancer es probable que no cuentes con un servidor dedicado para desarrollo y obviamente no podrás probarlo en producción.
Cualquiera que sea la razón, existen maneras de publicar tu servidor local a Internet.
A través de un NAT
La forma «tradicional» de realizarlo es con un NAT o con un «Port Forwarding», básicamente se trata de configurar el modem/router que nos haya otorgado nuestro proveedor de Internet, de tal manera que la solicitud de un puerto en específico sea redireccionado a una terminal dentro de nuestra red local.

En ocasiones esto no es posible de realizar debido a configuraciones o restricciones de nuestro proveedor ISP, por ejemplo:
En el caso de TELMEX (Infinitum) no hay problema debido a que nuestro Modem/Router cuenta con una dirección IP exclusiva y pública (pero no dedicada), eso quiere decir que es posible realizar una conexión directa ya que nadie en Internet tendrá la misma dirección que nosotros. Esto nos permitirá conectarnos por ejemplo: a nuestras cámaras de vigilancia, a algún servidor de almacenamiento como Synology, a un servidor web que tengamos en nuestra red local, a un servidor VPN que tengamos en la oficina o cualquier otro servicio que tengamos disponible.
Debido a que la IP es dinámica y no dedicada, eso significa que cambiará constantemente, entonces para conectarnos sin tener que estar apuntando la nueva dirección IP cada 2 o 3 días se recurre a los DNS dinámicos, básicamente se instala un software cliente, el cual envía cada determinado tiempo una actualización de nuestra dirección IP (beacon) a un servidor externo. Los servicios más utilizados para realizar esto son: DynDNS, No-IP y FreeDNS.
Respecto a IZZI de Cablevisión, no es posible realizar un NAT, al menos no de manera gratuita ¿Por qué? El ASN de Cablemas (AS28545) tiene 62,208 IPs públicas disponibles, contra el ASN de Telmex (AS8151) el cual tiene 13,605,376 de IPs V4 públicas disponibles; esto permite a TELMEX poder otorgar una dirección IP pública a cada uno de sus clientes de Infinitum y en el caso de Izzi esto no es posible ya que no tienen suficientes.
Esta limitación de Izzi, le obliga a tener que «compartir» las direcciones IP públicas entre sus clientes por lo cual no es posible realizar un NAT o «Port Forwarding» es decir: los clientes de Izzi forman parte de una Red privada con direcciones IPs privadas y salen a Internet a través de una sola dirección IP pública.

Es posible realizar un NAT en Izzi, pero es necesario contratar una dirección IP dedicada.
Aquí tienes una guía de como configurar un «Port Forwarding» en un modem HG530
Entonces, ¿qué pasa cuando no es viable realizar un NAT o «Port Forwarding»? bueno, existen otras maneras de poder publicar tu servidor a Internet y el cual te muestro ahora:
A través de Tunneling
El tunneling es un proceso de enrutado de red, en el cual se genera un socket de conexión entre un nodo intermediario y el cual permite la transmisión de información de una red a otra, por ejemplo de una red LAN a una WAN.
Básicamente es parecido a utilizar un proxy, el servidor intermediario «redirigirá» toda la información que reciba a nuestra terminal en nuestra red local (port forwarding escalado a nivel WAN).

Existen múltiples servicios que nos permitirán hacer esto, algunos de ellos gratuitos y otros que tienen costo. Recuerden, nunca nada es gratis por lo que no usaría jamás estos servidores a menos que fuera totalmente necesario.
Los servicios disponibles para esto son : localhost.run, ngrok.com, serveo.net y LocalTunnel.
No pondré un tutorial para cada uno ya que es muy fácil encontrarlos, pero pondré al menos uno; en realidad es muy sencillo de utilizar, basta con ejecutar un simple comando en consola:
ssh -R 80:localhost:8080 ssh.localhost.run
El comando anterior crea un tunel entre el servidor de localhost.run y tu computadora en el puerto 8080 (suponiendo que estés corriendo Tomcat), pero el puerto será el que utilice tu servicio. Posteriormente la consola te devolverá una URL personalizada la cual deberás utilizar para conectarte y será algo como:
Connect to http://ejemplo-2e35c8b9.localhost.run or https://ejemplo-2e35c8b9.localhost.run
De tal manera que si ingresaras https://ejemplo-2e35c8b9.localhost.run/algo.php es como si estuvieras ingresando a https://localhost/algo.php
Así de simple, no requiere ningún tipo de configuración extraordinaria y tu servidor local podrá ser accedido desde cualquier parte de Internet.
Existen soluciones más profesionales y con costo como: «Argo Tunnel» de Clouflare el cual te permite hacer lo mismo pero a través de la infraestructura de Cloudflare y con todas las bondades que ello supone, como autenticación, protección etc.
Como siempre, no hay garantía de que el tráfico que se transmite entre estos servicios gratuitos no sea capturado, analizado o decifrado, por lo que no te recomiendo usarlo, a menos que sea una emergencia y después que tomaras todas las previsiones.
A través de servidores gratuitos
La gran mayoría de los proveedores de tecnología Cloud como AWS, Google Cloud, Azure y el nuevo Alibaba Cloud. Ofrecen una opción llamada «Free Tier» lo que significa que puedes utilizar sus recursos de manera gratuita.
Cada proveedor tiene sus propias reglas y limitaciones, sin embargo, considero que para efectos de un servidor de prueba, podrías utilizar cualquiera de estos proveedores sin ningún problema.
Si deseas utilizar cualquiera de estos servicios ingresa a:
AWS
https://aws.amazon.com/es/free/
Azure
https://azure.microsoft.com/en-us/free/
Google Cloud
https://cloud.google.com/free
Alibaba Cloud
https://www.alibabacloud.com/campaign/free-trial
A través de VPN
La última forma de poder ingresar a tu servidor local es con una VPN, una forma gratuita de hacerlo es con «Hamachi» el cual es un software que nos permitirá crear una RedVPN de forma muy sencilla instalando una aplicación.
Esta Red es privada y por tanto tendremos direcciones IPs privadas las cuales utilizaremos para comunicarnos; puedes crear redes en malla, concentrador y de puerta de enlace.
Para crear una red en Hamachi, puedes hacerlo con la siguiente guía.
Espero que algunas de estas soluciones te ayuden y recuerda #QuédateEnCasa