Documentos de Académico
Documentos de Profesional
Documentos de Cultura
https://ngrok.com/docs
Detectar idioma español
Empezando Documentación
Exponer un servidor web local a
Internet
Inspeccionando su tráfico
Exponer un servidor web local a Internet
Reproducción de solicitudes ngrok le permite exponer un servidor web que se ejecuta en su máquina local a Internet. Solo dile a ngrok en
Solicitar validación del cuerpo qué puerto está escuchando tu servidor web.
Instalando su authtoken
Si no sabe en qué puerto está escuchando su servidor web, probablemente sea el puerto 80, el
predeterminado para HTTP.
Túneles HTTP
Nombres de subdominio Ejemplo: exponer un servidor web en el puerto 80 de su máquina local a Internet
personalizados
Contraseña protegiendo tu túnel ngrok http 80
Túneles en dominios personalizados
(URL de etiqueta blanca)
Desactivando la inspección Cuando inicie ngrok, mostrará una IU en su terminal con la URL pública de su túnel y otra información de
Reescribiendo el encabezado del estado y métricas sobre las conexiones realizadas a través de su túnel.
host
La interfaz de usuario de la consola ngrok
Túneles solo HTTP o HTTPS
Websockets
ngrok by @inconshreveable Tunnel Status online Version 2.0/2.0 Web Interface http://127.0.0.
1:4040 Forwarding http://92832de0.ngrok.io ‐> localhost:80 Forwarding https://92832de0.ngrok.
Túneles TLS
io ‐> localhost:80 Connnections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
Túneles TLS sin advertencias de
certificado
Terminando conexiones TLS
Ejecución de servicios que no son
HTTP sobre túneles TLS Inspeccionando su trá co
Clientes compatibles
ngrok proporciona una interfaz de usuario web en tiempo real en la que puede introspectar todo el tráfico
HTTP que se ejecuta en sus túneles. Después de iniciar ngrok, abra http: // localhost: 4040 en un navegador
Túneles TCP
web para inspeccionar los detalles de la solicitud.
Ejemplos
Escuchando en una dirección remota Intente hacer una solicitud a su URL pública. Después de hacerlo, mira hacia atrás en la interfaz de usuario de
reservada inspección. Verá todos los detalles de la solicitud y respuesta, incluidos el tiempo, la duración, los
encabezados, los parámetros de consulta y la carga útil de la solicitud, así como los bytes brutos en el cable.
Más opciones de túnel Introspección detallada de las solicitudes y respuestas HTTP
Dominios comodín
Reglas de dominio comodín
Reenvío a servidores en una máquina
diferente (servicios no locales)
Infraestructura global
Ubicaciones
Uso
Limitaciones
Solución de problemas
CORS con autenticación básica HTTP
API cliente
Base URL y Autenticación
Tipos de contenido admitidos
Versiones y estabilidad de API
Listar túneles
Comience el túnel
Detalle del túnel
Stop Tunnel
Lista de solicitudes capturadas
Reproducción de solicitud capturada
Eliminar solicitudes capturadas
Detalle de solicitud capturada
Solicitar validación del cuerpo
Compatibilidad al revés
ngrok tiene soporte especial para los formatos de intercambio de datos más comunes en uso en la web.
Promesa de compatibilidad
Cualquier dato XML o JSON en los cuerpos de solicitud o respuesta se imprime automáticamente para usted
¿Qué interfaces están sujetas a la
y se comprueba si hay errores de sintaxis.
promesa?
Cambios en 2.2 La ubicación de un error de sintaxis JSON está resaltada
Cambios en 2.1
ngrok 1.x sunset
documentación de enlace
ngrok
Instalando su Authtoken
Muchas funciones avanzadas del servicio ngrok.com que se describen en secciones posteriores requieren que
se registre para obtener una cuenta . Una vez que se haya registrado, debe configurar ngrok con la
autenticación que aparece en su tablero. Esto le otorgará acceso a funciones de solo cuenta. ngrok tiene un
simple comando 'authtoken' para hacer esto fácil. Debajo del capó, todo lo que hace el comando authtoken
es agregar (o modificar) la propiedad authtoken en su archivo de configuración ngrok .
Instala tu authtoken
ngrok authtoken <YOUR_AUTHTOKEN>
Page 2 / 18
Page 3 / 18
Túneles HTTP
Nombres de subdominio personalizados
ngrok asigna nombres hexadecimales aleatorios a los túneles HTTP que abre para usted. Esto está bien para
los usos personales de una sola vez. Pero si muestra la URL en un hackathon o se integra con un webhook de
un tercero, puede ser frustrante si el nombre del túnel cambia o es difícil de leer. Puede especificar un
subdominio personalizado para su URL de túnel con el ‐subdomain .
ngrok http ‐subdomain=inconshreveable 80
ngrok by @inconshreveable ... Forwarding http://inconshreveable.ngrok.io ‐> 127.0.0.1:80 For
warding https://inconshreveable.ngrok.io ‐> 127.0.0.1:80
ngrok http ‐auth="username:password" 8080
3. Cree un registro DNS CNAME desde dev.example.com a su destino CNAME. En este ejemplo,
apuntaríamos el registro CNAME a 2w9c34maz.cname.ngrok.io
4. Invoca ngrok con el parámetro ‐hostname y especifica el nombre de tu dominio personalizado como
argumento. Asegúrese de que la región que especifique coincida con la región en la que reservó su
dominio.
ngrok http ‐region=us ‐hostname=dev.example.com 8000
Desactivando la inspección
ngrok registra cada solicitud HTTP y respuesta sobre sus túneles para inspección y reproducción. Si bien esto
es realmente útil para el desarrollo, cuando está ejecutando ngrok en servicios de producción, es posible que
desee deshabilitarlo para seguridad y rendimiento. Use el interruptor ‐inspect para deshabilitar la
inspección en su túnel.
Page 3 / 18
Page 4 / 18
Ejemplo: un túnel http sin inspección
ngrok http ‐inspect=false 80
Si se especifica rewrite , el encabezado del Host se reescribirá para que coincida con la parte de nombre de
host de la dirección de reenvío. Cualquier otro valor hará que el encabezado del Host se reescriba a ese
valor.
ngrok http ‐host‐header=rewrite site.dev:80
ngrok http ‐host‐header=example.com 80
ngrok http ‐bind‐tls=false site.dev:80
ngrok http ‐bind‐tls=true site.dev:80
Websockets
Los puntos finales de Websocket funcionan a través de los túneles http de ngrok sin ningún cambio. Sin
embargo, actualmente no hay soporte para introspectarlos más allá de la respuesta inicial de 101 Protocolos
de Conmutación.
Túneles TLS
Los túneles HTTPS terminan todo el tráfico TLS (SSL) en los servidores ngrok.com utilizando los certificados
ngrok.com. Para los servicios de nivel de producción, querrá que su tráfico en túnel se cifre con su propia clave
y certificado TLS. ngrok lo hace extraordinariamente fácil con los túneles TLS.
ngrok tls ‐subdomain=encrypted 443
Una vez que el túnel se esté ejecutando, intente acceder a él con curl.
curl ‐‐insecure https://encrypted.ngrok.io
Page 4 / 18
Page 5 / 18
porque su servidor HTTPS local no tiene la clave TLS y el certificado necesarios para finalizar el tráfico de los
subdominios ngrok.io . Si intenta cargar esa página en un navegador web, notará que le dice que la página
podría ser insegura porque el certificado no coincide.
Si desea que sus certificados coincidan y estén protegidos de los ataques de hombre en el medio, necesita dos
cosas. En primer lugar, deberá comprar un certificado SSL (TLS) para un nombre de dominio que tenga y
configurar su servidor web local para usar ese certificado y su clave privada para finalizar las conexiones TLS.
Cómo hacer esto es específico para su servidor web y proveedor de certificado SSL y más allá del alcance de
esta documentación. A modo de ejemplo, supondremos que recibió un certificado SSL para el dominio
secure.example.com .
Una vez que tenga su clave y certificado y los haya instalado correctamente, es hora de ejecutar un túnel TLS
en su propio nombre de dominio personalizado. Las instrucciones para configurar esto son idénticas a las
descritas en la sección de túneles HTTP: túneles en dominios personalizados . El dominio personalizado que
registra debe ser el mismo que el de su certificado SSL ( secure.example.com ). Después de configurar el
dominio personalizado, use el argumento ‐hostname para iniciar el túnel TLS en su propio dominio.
ngrok tls ‐region=us ‐hostname=secure.example.com 443
ngrok tls ‐region=us ‐hostname secure.example.com ‐key /path/to/tls.key ‐crt /path/to/tls.cr
t 80
Clientes compatibles
Los túneles TLS funcionan inspeccionando los datos presentes en la extensión de información del nombre del
servidor (SNI) en las conexiones TLS entrantes. No todos los clientes que inician conexiones TLS admiten la
configuración de los datos de la extensión SNI. Estos clientes no funcionarán correctamente con los túneles
TLS de ngrok. Afortunadamente, casi todos los navegadores modernos usan SNI. Algunas bibliotecas de
software modernas no lo hacen. La siguiente lista de clientes no es compatible con SNI y no funcionará con
túneles TLS:
Se puede encontrar una lista más completa en la página de Indicaciones del nombre del servidor en Wikipedia
Túneles TCP
No todos los servicios que desea exponer están basados en HTTP o TLS. Los túneles ngrok TCP le permiten
exponer cualquier servicio de red que se ejecute a través de TCP. Esto se usa comúnmente para exponer SSH,
servidores de juegos, bases de datos y más. Iniciar un túnel TCP es fácil.
ngrok tcp 1234
Page 5 / 18
Page 6 / 18
Ejemplos
Exponer un servidor SSH escuchando en el puerto predeterminado
ngrok tcp 22
ngrok tcp 5432
ngrok tcp 25565
ngrok tcp ‐‐region=us ‐‐remote‐addr 1.tcp.ngrok.io:20301 22
E n l a c e u n t ú n e l p a r a r e c i b i r t r á c o e n t o d o s l o s s u b d o m i n i o s d e example.com
ngrok http ‐‐region=us ‐‐hostname *.example.com 80
ngrok http 192.168.1.1:8080
Infraestructura global
ngrok ejecuta servidores de túnel distribuidos por todo el mundo para permitir un tráfico rápido y de baja
latencia a sus aplicaciones.
Ubicaciones
ngrok ejecuta servidores de túnel en centros de datos de todo el mundo. La ubicación del centro de datos
dentro de una región determinada puede cambiar sin previo aviso (por ejemplo, los servidores europeos
pueden trasladarse de Frankfurt a Londres).
eu - Europa (Frankfurt)
au - Australia (Sydney)
Uso
Si no selecciona explícitamente una región, su túnel se alojará en la región predeterminada,
Estados Unidos . Escoger la región más cercana es tan fácil como especificar la configuración del indicador
de línea de comando ‐region o establecer la propiedad de region en su archivo de configuración. Por
ejemplo, para comenzar un túnel en la región de Europa:
ngrok http ‐region eu 8080
Los dominios reservados y las direcciones reservadas se asignan a una región específica (la región de EE. UU.
Por defecto). Cuando reserva un dominio o una dirección, debe seleccionar una región objetivo. No puede
enlazar un dominio o dirección reservada en otra región que no sea para la que se asignó. Intentar hacerlo
producirá un error y evitará que su sesión de túnel se inicialice.
Limitaciones
Un cliente ngrok solo puede estar conectado a una sola región . Esto puede cambiar en el futuro,
pero por el momento un solo cliente ngrok no puede alojar túneles en múltiples regiones simultáneamente.
Ejecute varios clientes ngrok si necesita hacer esto.
Como un caso especial, si su lista blanca está vacía, se permiten todas las conexiones .
Rangos de IP
A veces, es posible que desee incluir en la lista blanca un rango completo de direcciones IP. En lugar de
ingresar solo una dirección IP, puede especificar un bloque de direcciones IP usando la notación CIDR . Por
ejemplo, para permitir todas las direcciones IP de 10.1.2.0 a 10.1.2.255, debería agregar 10.1.2.0/24 a su lista
blanca.
Page 7 / 18
Page 8 / 18
ngrok http ‐config=/opt/ngrok/conf/ngrok.yml 8000
Puede pasar la opción ‐config más de una vez. Si lo hace, la primera configuración se analiza y cada
configuración sucesiva se fusiona en la parte superior. Esto le permite tener archivos de configuración de
ngrok por proyecto con definiciones de túnel, pero un archivo de configuración maestra en su directorio de
inicio con su authtoken y otras configuraciones globales.
Especi que un archivo de con guración adicional con anulaciones especí cas del proyecto
ngrok start ‐config ~/ngrok.yml ‐config ~/projects/example/ngrok.yml demo admin
En la ruta predeterminada, $ HOME es el directorio de inicio para el usuario actual tal como lo define su
sistema operativo. No es la variable de entorno $ HOME , aunque a menudo son lo mismo. Para los
principales sistemas operativos, si su nombre de usuario es example la configuración predeterminada
probablemente se encuentre en las siguientes rutas:
OS X /Users/example/.ngrok2/ngrok.yml
Linux /home/example/.ngrok2/ngrok.yml
Windows C:\Users\example\.ngrok2\ngrok.yml
De niciones de túnel
El uso más común del archivo de configuración es definir configuraciones de túnel. La definición de
configuraciones de túneles es útil porque puedes iniciar túneles preconfigurados por nombre desde tu línea
de comando sin recordar todos los argumentos correctos cada vez.
Los túneles se definen como mapeo de nombre -> configuración bajo la propiedad tunnels en su archivo de
configuración.
tunnels: httpbin: proto: http addr: 8000 subdomain: alan‐httpbin demo: proto: http addr: 909
0 hostname: demo.inconshreveable.com inspect: false auth: "demo:secret"
ngrok start httpbin
Cada túnel que define es un mapa de nombres de opciones de configuración a valores. El nombre de una
opción de configuración suele ser el mismo que el de su línea de comando correspondiente. Cada túnel debe
definir proto y addr . Otras propiedades están disponibles y muchas son específicas del protocolo.
Page 8 / 18
Page 9 / 18
addr necesario reenviar el tráfico a este número de puerto local o dirección de
todas red
host_header http Vuelva a escribir el encabezado del host HTTP en este valor, o
preserve para dejarlo sin cambios
bind_tls http enlazar un punto final HTTPS o HTTP o ambos true , false o
both
subdomain http tls nombre del subdominio para solicitar. Si no se especifica, usa el
nombre del túnel
hostname http tls nombre de host para solicitar (requiere nombre reservado y DNS
CNAME)
crt tls Certificado PEM TLS en esta ruta para finalizar el tráfico TLS antes
de reenviar localmente
key tls La clave privada PEM TLS en esta ruta para terminar el tráfico TLS
antes de reenviar localmente
client_cas tls La autoridad de certificación PEM TLS en esta ruta verificará los
certificados de conexión de cliente TLS entrantes.
ngrok start admin ssh metrics
ngrok by @inconshreveable Tunnel Status online Version 2.0/2.0 Web Interface http://127.0.0.
1:4040 Forwarding http://admin.ngrok.io ‐> 10.0.0.1:9001 Forwarding http://device‐metrics.ngr
ok.io ‐> localhost:2015 Forwarding https://admin.ngrok.io ‐> 10.0.0.1:9001 Forwarding https:/
/device‐metrics.ngrok.io ‐> localhost:2015 Forwarding tcp://0.tcp.ngrok.io:48590 ‐> localhost
:22 ...
También puede solicitarle a ngrok que inicie todos los túneles definidos en el archivo de configuración con el
‐‐all switch.
ngrok start ‐‐all
Por el contrario, puede pedirle a ngrok que ejecute sin iniciar ningún túnel con el ‐‐none . Esto es útil si
planea administrar los túneles de ngrok completamente a través de la API.
ngrok start ‐‐none
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p tunnels: app‐foo: addr: 80 proto: http ho
st_header: app‐foo.dev app‐bar: addr: 80 proto: http host_header: app‐bar.dev
Page 9 / 18
Page 10 / 18
Haga un túnel de un dominio personalizado sobre http y https con su propio certi cado
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p tunnels: myapp‐http: addr: 80 proto: http
hostname: example.com bind_tls: false mypp‐https: addr: 443 proto: tls hostname: example.com
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p tunnels: myapp‐http: addr: 4040 proto: ht
tp subdomain: myapp‐inspect auth: "user:secretpassword" inspect: false
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p region: us console_ui: true compress_conn
: false http_proxy: false inspect_db_size: 50000000 log_level: info log_format: json log: /va
r/log/ngrok.log metadata: '{"serial": "00012xa‐33rUtz9", "comment": "For customer alan@exampl
e.com"}' root_cas: trusted socks5_proxy: "socks5://localhost:9150" update: false update_chann
el: stable web_addr: localhost:4040 tunnels: website: addr: 8888 auth: bob:bobpassword bind_t
ls: true host_header: "myapp.dev" inspect: false proto: http subdomain: myapp e2etls: addr: 9
000 proto: tls hostname: myapp.example.com crt: example.crt key: example.key ssh‐access: addr
: 22 proto: tcp remote_addr: 1.tcp.ngrok.io:12345
authtoken: 4nq9771bPxe8ctg7LKr_2ClH7Y15Zqe4bWLWF9p
console_ui
iftty defecto habilitar la interfaz de usuario solo si la salida estándar es un TTY (no un
archivo o una tubería)
console_ui_color
http_proxy
URL de un proxy HTTP para usar para establecer la conexión de túnel. Muchos proxies HTTP tienen límites de
duración y tamaño de conexión que harán que falle ngrok. Al igual que muchas otras herramientas de red,
ngrok también respetará la variable de entorno http_proxy si está configurada.
http_proxy: "http://user:password@proxy.company:3128"
Page 10 / 18
Page 11 / 18
inspect_db_size
enteros tamaño en bytes del límite superior en la memoria para asignar para
positivos guardar solicitudes en túneles HTTP para inspección y reproducción.
log_level
Nivel de detalle de registro. En orden creciente de verbosidad, los valores posibles son: crit , warn , error
, info , debug
log_format
Formato de registros de registro escritos.
log
Escribir registros en este destino de destino.
log: /var/log/ngrok.log
metadata
Cadena opaca, proporcionada por el usuario, que se devolverá como parte de la respuesta de la API de
ngrok.com al recurso List Online Tunnels para todos los túneles iniciados por este cliente. Este es un
mecanismo útil para identificar túneles con su propio dispositivo o identificador de cliente. Máximo 4096
caracteres.
metadata: bad8c1c0‐8fce‐11e4‐b4a9‐0800200c9a66
region
Elija la región donde se conectará el cliente ngrok para alojar sus túneles.
eu Europa
ap Asia / Pacífico
au Australia
Page 11 / 18
Page 12 / 18
root_cas
Las autoridades del certificado raíz utilizadas para validar la conexión TLS al servidor ngrok.
trusted defecto use solo la raíz de certificado de confianza para el servicio de túnel
ngrok.com
host use los certificados raíz de confianza del sistema operativo del host. Es
probable que desee utilizar esta opción para conectarse a servidores
ngrok de terceros.
socks5_proxy
URL de un proxy SOCKS5 a usar para establecer una conexión con el servidor ngrok.
socks5_proxy: "socks5://localhost:9150"
tunnels
Un mapa de nombres para tunelizar definiciones. Ver definiciones de túneles para más detalles.
update
false defecto Nunca actualice ngrok a menos que lo inicie manualmente el usuario
update_channel
El canal de actualización determina la estabilidad de las versiones publicadas para actualizar. Use 'estable'
para todas las implementaciones de producción.
web_addr
Dirección de red a la que enlazar para servir la interfaz web local y la API.
1. Debe asegurarse de que Wordpress emite URL relativos. Puede hacerlo instalando uno de los siguientes
complementos
https://github.com/optimizamx/odt-relative-urls
http://wordpress.org/plugins/relative-url/
http://wordpress.org/plugins/root-relative-urls/
2. Debe asegurarse de que Wordpress comprenda que está destinado a servirse a sí mismo desde su nombre
Page 12 / 18
Page 13 / 18
de host tunelizado. Puede configurar WordPress para hacer eso modificando su `wp-config` para incluir las
siguientes líneas:
define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); define('WP_HOME', 'http://' . $
_SERVER['HTTP_HOST']);
ngrok http ‐host‐header=myapp.dev 80
Un proxy de salida
ngrok funciona correctamente a través de un proxy HTTP o SOCKS5. ngrok respeta la variable de entorno unix
estándar http_proxy . También puede establecer la configuración del proxy explícitamente en el archivo de
configuración de ngrok:
node.js
Utilice el paquete npm de bubenshchykov para interactuar con ngrok desde node.js:
Marioneta
Utilice el módulo de marionetas de gabe para instalar y configurar los recursos de ngrok y asegúrese de que el
proceso de ngrok client se esté ejecutando: módulo ngrok para Puppet
Solución de problemas
CORS con autenticación básica HTTP
Sí, pero no puedes usar la opción -auth de ‐auth . Los túneles http de ngrok te permiten especificar
credenciales de autenticación básicas para proteger tus túneles. Sin embargo, ngrok impone esta política en
las solicitudes * all *, incluidas las solicitudes de OPTIONS verificación previa que son requeridas por la
especificación CORS. En este caso, su aplicación debe implementar su propia autenticación básica. Para más
detalles, mira este problema de github .
Autenticación Ninguna
La API del cliente ngrok está expuesta como parte de la interfaz de inspección web local de ngrok. Debido a
Page 13 / 18
Page 14 / 18
que se sirve en una interfaz local, la API no tiene autenticación. La URL base cambiará si anula web_addr en su
archivo de configuración.
curl http://localhost:4040/api/
Listar túneles
Devuelve una lista de túneles en ejecución con información de estado y métricas.
Solicitud
Respuesta
Parámetros
tunnels lista de todos los túneles en ejecución. Ver el recurso de detalle Tunnel para
documentos sobre los parámetros de cada objeto de túnel
Ejemplo de respuesta
{ "tunnels": [ { "name": "command_line", "uri": "/api/tunnels/command_line", "public_url": "
https://d95211d2.ngrok.io", "proto": "https", "config": { "addr": "localhost:80", "inspect":
true, }, "metrics": { "conns": { "count": 0, "gauge": 0, "rate1": 0, "rate5": 0, "rate15": 0,
"p50": 0, "p90": 0, "p95": 0, "p99": 0 }, "http": { "count": 0, "rate1": 0, "rate5": 0, "rat
e15": 0, "p50": 0, "p90": 0, "p95": 0, "p99": 0 } } }, ... ], "uri": "/api/tunnels" }
Comience el túnel
Inicia dinámicamente un nuevo túnel en el cliente ngrok. Los parámetros del cuerpo de la solicitud son los
mismos que usaría para definir el túnel en el archivo de configuración.
Solicitud
Parámetros
Los nombres y comportamientos de los parámetros son idénticos a los definidos en el archivo de
configuración. Use la sección de definiciones del túnel como referencia para los parámetros de configuración
y sus comportamientos.
{ "addr": "22", "proto": "tcp", "name": "ssh" }
Respuesta
Código de estado 201 con un cuerpo de respuesta que describe el túnel iniciado. Ver el recurso de detalle
Tunnel para documentos sobre los parámetros del objeto de respuesta
Page 14 / 18
Page 15 / 18
Ejemplo de respuesta
{ "name": "", "uri": "/api/tunnels/", "public_url": "tcp://0.tcp.ngrok.io:53476", "proto": "
tcp", "config": { "addr": "localhost:22", "inspect": false, }, "metrics": { "conns": { "count
": 0, "gauge": 0, "rate1": 0, "rate5": 0, "rate15": 0, "p50": 0, "p90": 0, "p95": 0, "p99": 0
}, "http": { "count": 0, "rate1": 0, "rate5": 0, "rate15": 0, "p50": 0, "p90": 0, "p95": 0,
"p99": 0 } } }
Solicitud
Respuesta
Ejemplo de respuesta
{ "name": "command_line", "uri": "/api/tunnels/command_line", "public_url": "https://ac29412
5.ngrok.io", "proto": "https", "config": { "addr": "localhost:80", "inspect": true, }, "metri
cs": { "conns": { "count": 0, "gauge": 0, "rate1": 0, "rate5": 0, "rate15": 0, "p50": 0, "p90
": 0, "p95": 0, "p99": 0 }, "http": { "count": 0, "rate1": 0, "rate5": 0, "rate15": 0, "p50":
0, "p90": 0, "p95": 0, "p99": 0 } } }
Stop tunnel
Detener un túnel en ejecución
Solicitud
Respuesta
Código de estado 204 con un cuerpo vacío
Solicitud
Parámetros de consulta
Solicitud de ejemplo
curl http://localhost:4040/api/requests/http?limit=50
Respuesta
Ejemplo de respuesta
{ "uri": "/api/requests/http", "requests": [ { "uri": "/api/requests/http/548fb5c700000002",
"id": "548fb5c700000002", "tunnel_name": "command_line (http)", "remote_addr": "192.168.100.
25", "start": "2014‐12‐15T20:32:07‐08:00", "duration": 3893202, "request": { "method": "GET",
"proto": "HTTP/1.1", "headers": { "Accept": [ "*/*" ], "Accept‐Encoding": [ "gzip, deflate,
sdch" ], "Accept‐Language": [ "en‐US,en;q=0.8" ], "Connection": [ "keep‐alive" ], "User‐Agent
": [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) C
Page 15 / 18
Page 16 / 18
hrome/39.0.2171.71 Safari/537.36" ], "X‐Original‐Host": [ "c159663f.ngrok.io" ] }, "uri": "/f
avicon.ico", "raw": " " }, "response": { "status": "502 Bad Gateway", "status_code": 502, "pr
oto": "HTTP/1.1", "headers": { "Content‐Length": [ "1716" ] }, "raw": " ", } }, ... ] } { "u
ri": "/api/requests/http", "requests": [ { "uri": "/api/requests/http/548fb5c700000002", "id"
: "548fb5c700000002", "tunnel_name": "command_line (http)", "remote_addr": "192.168.100.25",
"start": "2014‐12‐15T20:32:07‐08:00", "duration": 3893202, "request": { "method": "GET", "pro
to": "HTTP/1.1", "headers": { "Accept": [ "*/*" ], "Accept‐Encoding": [ "gzip, deflate, sdch"
], "Accept‐Language": [ "en‐US,en;q=0.8" ], "Connection": [ "keep‐alive" ], "User‐Agent": [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome
/39.0.2171.71 Safari/537.36" ], "X‐Original‐Host": [ "c159663f.ngrok.io" ] }, "uri": "/favico
n.ico", "raw": " " }, "response": { "status": "502 Bad Gateway", "status_code": 502, "proto":
"HTTP/1.1", "headers": { "Content‐Length": [ "1716" ] }, "raw": " ", } }, ... ] } { "uri":
"/api/requests/http", "requests": [ { "uri": "/api/requests/http/548fb5c700000002", "id": "54
8fb5c700000002", "tunnel_name": "command_line (http)", "remote_addr": "192.168.100.25", "star
t": "2014‐12‐15T20:32:07‐08:00", "duration": 3893202, "request": { "method": "GET", "proto":
"HTTP/1.1", "headers": { "Accept": [ "*/*" ], "Accept‐Encoding": [ "gzip, deflate, sdch" ], "
Accept‐Language": [ "en‐US,en;q=0.8" ], "Connection": [ "keep‐alive" ], "User‐Agent": [ "Mozi
lla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0
.2171.71 Safari/537.36" ], "X‐Original‐Host": [ "c159663f.ngrok.io" ] }, "uri": "/favicon.ico
", "raw": " " }, "response": { "status": "502 Bad Gateway", "status_code": 502, "proto": "HTT
P/1.1", "headers": { "Content‐Length": [ "1716" ] }, "raw": " ", } }, ... ] }
Solicitud
Parámetros
Solicitud de ejemplo
curl ‐H "Content‐Type: application/json" ‐d '{"id": "548fb5c700000002"}' http://localhost:40
40/api/requests/http
Respuesta
Código de estado 204 con un cuerpo vacío
Solicitud
Respuesta
Código de estado 204 sin cuerpo de respuesta
Solicitud
Respuesta
Ejemplo de respuesta
{ "uri": "/api/requests/http/548fb5c700000002", "id": "548fb5c700000002", "tunnel_name": "co
mmand_line (http)", "remote_addr": "192.168.100.25", "start": "2014‐12‐15T20:32:07‐08:00", "d
Page 16 / 18
Page 17 / 18
uration": 3893202, "request": { "method": "GET", "proto": "HTTP/1.1", "headers": { "Accept":
[ "*/*" ], "Accept‐Encoding": [ "gzip, deflate, sdch" ], "Accept‐Language": [ "en‐US,en;q=0.8
" ], "Connection": [ "keep‐alive" ], "User‐Agent": [ "Mozilla/5.0 (Macintosh; Intel Mac OS X
10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" ], "X‐Origi
nal‐Host": [ "c159663f.ngrok.io" ] }, "uri": "/favicon.ico", "raw": " " }, "response": { "sta
tus": "502 Bad Gateway", "status_code": 502, "proto": "HTTP/1.1", "headers": { "Content‐Lengt
h": [ "1716" ] }, "raw": " ", } } { "uri": "/api/requests/http/548fb5c700000002", "id": "548
fb5c700000002", "tunnel_name": "command_line (http)", "remote_addr": "192.168.100.25", "start
": "2014‐12‐15T20:32:07‐08:00", "duration": 3893202, "request": { "method": "GET", "proto": "
HTTP/1.1", "headers": { "Accept": [ "*/*" ], "Accept‐Encoding": [ "gzip, deflate, sdch" ], "A
ccept‐Language": [ "en‐US,en;q=0.8" ], "Connection": [ "keep‐alive" ], "User‐Agent": [ "Mozil
la/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.
2171.71 Safari/537.36" ], "X‐Original‐Host": [ "c159663f.ngrok.io" ] }, "uri": "/favicon.ico"
, "raw": " " }, "response": { "status": "502 Bad Gateway", "status_code": 502, "proto": "HTTP
/1.1", "headers": { "Content‐Length": [ "1716" ] }, "raw": " ", } } { "uri": "/api/requests/
http/548fb5c700000002", "id": "548fb5c700000002", "tunnel_name": "command_line (http)", "remo
te_addr": "192.168.100.25", "start": "2014‐12‐15T20:32:07‐08:00", "duration": 3893202, "reque
st": { "method": "GET", "proto": "HTTP/1.1", "headers": { "Accept": [ "*/*" ], "Accept‐Encodi
ng": [ "gzip, deflate, sdch" ], "Accept‐Language": [ "en‐US,en;q=0.8" ], "Connection": [ "kee
p‐alive" ], "User‐Agent": [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.3
6 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" ], "X‐Original‐Host": [ "c159663f.ng
rok.io" ] }, "uri": "/favicon.ico", "raw": " " }, "response": { "status": "502 Bad Gateway",
"status_code": 502, "proto": "HTTP/1.1", "headers": { "Content‐Length": [ "1716" ] }, "raw":
" ", } }
Compatibilidad al revés
ngrok hace promesas sobre la compatibilidad y la estabilidad de sus interfaces para que pueda construir con
confianza integraciones en la parte superior y saber qué cambios esperar al actualizar a versiones más nuevas.
Promesa de compatibilidad
Liberación de punto (2.0.0 -> 2.0.1) - ngrok promete que no habrá cambios bruscos en las versiones
puntuales
Cambio de versión menor (2.0 -> 2.1) - ngrok puede hacer pequeños cambios que rompen la
compatibilidad en un cambio de versión menor. ngrok promete que cualquier cambio de ruptura estará
precedido por un lanzamiento que advierte sobre el comportamiento que será modificado o
desaprobado.
Cambio importante de versión (2.0 -> 3.0) - ngrok no promete que las interfaces son estables en un
cambio importante de versión.
Cualquier otra interfaz como el formato de registro o la interfaz de usuario web no está sujeta a ninguna
promesa de compatibilidad y puede cambiar sin previo aviso entre versiones.
Cambios en 2.2
La API del cliente ngrok ya no acepta application/x‐www‐form‐urlencoded cuerpos de solicitud. En la
práctica, esto solo afecta al /api/requests/http/:id punto final porque la publicación en el
/api/tunnels punto final con este tipo de cuerpo de solicitud causó previamente que ngrok se bloquee.
Este cambio se realizó para ayudar a proteger contra páginas web creadas de forma malintencionada que
podrían provocar que el usuario interactúe inadvertidamente con su API local de ngrok.
Cambios en 2.1
Cambios de comportamiento http y tls túneles definidos en el archivo de configuración o iniciados a través
de la API que no tienen una propiedad subdomain o hostname .
tunnels: webapp: proto: http addr: 80
Dado este ejemplo de configuración de túnel, el comportamiento cambiará de las siguientes maneras.
Comportamiento anterior
Inicia un túnel utilizando el nombre del túnel como el subdominio que da como resultado la URL
Page 17 / 18
Page 18 / 18
http://webapp.ngrok.io
Nuevo Comportamiento
Inicia un túnel con un subdominio aleatorio, por ejemplo, una URL como http://d95211d2.ngrok.io
tunnels: webapp: proto: http addr: 80 subdomain: webapp
Este comportamiento cambió para permitir el lanzamiento de túneles con dominios aleatorios. Esto impedía
el uso del archivo de configuración y la API cliente para liberar usuarios de nivel.
© inconshreveable 2018
Page 18 / 18