You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在连接ngrok隧道时指定特定路径?

ngrok绑定特定路径的替代方案

ngrok本身确实不支持直接把隧道绑定到localhost:8000/webhook这种特定路径,不过有几个可行的替代方法:

1. 用ngrok配置文件做路径重写

直接通过ngrok的配置规则,把隧道的所有请求重写到本地的目标路径:

  • 创建ngrok.yml配置文件,内容如下:
tunnels:
  webhook_tunnel:
    proto: http
    addr: localhost:8000
    host_header: localhost:8000
    rewrite:
      path:
        - regex: ^/
          replacement: /webhook
  • 启动隧道时指定配置文件:ngrok start webhook_tunnel --config=ngrok.yml
    这样访问ngrok生成的地址(比如https://xxxx.ngrok.io)时,请求会自动转发到localhost:8000/webhook

2. 本地搭建反向代理

如果不想改ngrok配置,可以在本地搭个简单的代理,把某个端口的请求转发到目标路径:

示例:用Python Flask快速实现

  • 安装依赖:pip install flask requests
  • 写一个代理脚本(比如proxy.py):
from flask import Flask, request, Response
import requests

app = Flask(__name__)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def forward_to_webhook(path):
    target_url = f'http://localhost:8000/webhook/{path}'
    # 转发请求到目标路径
    resp = requests.request(
        method=request.method,
        url=target_url,
        headers={k: v for k, v in request.headers.items() if k != 'Host'},
        data=request.get_data(),
        cookies=request.cookies
    )
    # 处理响应头,避免冲突
    headers = [(k, v) for k, v in resp.raw.headers.items() if k.lower() not in ['content-encoding', 'content-length', 'transfer-encoding', 'connection']]
    return Response(resp.content, resp.status_code, headers)

if __name__ == '__main__':
    app.run(port=8080)
  • 启动代理:python proxy.py
  • 用ngrok转发代理端口:ngrok http localhost:8080
    现在访问ngrok地址就会自动转到localhost:8000/webhook

3. 修改服务的路由配置(如果可行)

如果你的服务代码可以调整,直接把/webhook的业务逻辑映射到根路径(/),这样就能直接用ngrok http localhost:8000实现需求,不过这种方法只适合能修改服务的场景。

内容的提问来源于stack exchange,提问作者Lukasz Dynowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:33:21