通过 ngrok 隧道化本地主机子目录?

Tunnel a localhost subdirectory through ngrok?

Objective:想要使用 ngrok 共享网站预览,这会创建一个隧道,从中可以看到我的本地主机,其中 url 类似于 mywebsite.ngrok.io

问题:我使用 WAMP,我的本地主机文件夹看起来像这样:

localhostdirectory
   |-- website1
   |-- website2
   |-- etc

要访问我在浏览器中键入 localhost/website1/ 的网站,我只想隧道 URL,可能的解决方案是:

  1. 设置虚拟主机,I would go through the hassle of manually setting up a virtual host, then I get something like website1.dev, and then I would pass it to ngrok as the host header in the HTTP request, like that:

    ngrok http -host-header=website1.dev 80
    

    虽然我不明白主机 header 是什么,为什么我不能像 localhost/website1/ 那样传递一个亲戚 url,还有重写选项是什么?

  2. 将本地主机的文件夹目录更改为网站的文件夹,我不想那样做。

是否有更好的方法以更简单的方式完成我的 objective,也许是通过 WAMP 别名?

将ngrok地址设置为指向80端口上的本地主机后,您就可以通过网站名称访问您的网站了。 例如:

ngrok http -subdomain=dev 80

访问网站1:

dev.ngrok.io/website1

如果你凑合使用 Apache Vhost,你只需要执行命令

ngrok http -host-header=rewrite YOUR-LOCAL-DOMAIN:PORT

不要忘记编辑主机文件以解决@IP <-> YOUR-LOCAL-DOMAIN

我尝试了下面的方法。

当我 运行 $ ./ngrok http 80 ngrok 监听 localhost:80 时显示仪表板,因为 apache 服务器在 port 80 上 运行。然后我在另一个端口尝试 运行 子文件夹,这解决了问题。假设您在 xyz 中有项目并且希望 ngrok 应该指向它。然后执行以下操作

$ cd /opt/lampp/htdocs/xyz
$ php -S localhost:8080

此处8080是任何未使用的端口。 localhost:8080直接指向xyz然后打开其他终端

$ ./ngrok http 8080

通过这样做,ngrok 将监听 8080 端口,如果您的 xyz 是 运行。

希望对您有所帮助!!

我相信现在 ngrok v3 的正确语法是 ngrok http --host-header=rewrite YOUR-LOCAL-DOMAIN:PORT

注意双重 --

https://ngrok.com/docs/guides/upgrade-v2-v3