如何通过ngrok将本地子目录隧道传输?

27

目标:想要使用ngrok分享网站预览,它可以创建一个隧道,从中可以看到我的本地主机,并具有类似于mywebsite.ngrok.io的URL。

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

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

为了访问网站,我在浏览器中输入localhost/website1/。我想只隧道传输该URL,可能的解决方案如下:

  1. 设置虚拟主机,我需要手动设置虚拟主机,然后得到类似于website1.dev的东西,最后将其作为HTTP请求的主机头传递给ngrok,像这样

    ngrok http -host-header=website1.dev 80
    

    我不理解主机头是什么,为什么不能传递相对URL,比如localhost/website1/,同时重写选项是什么?

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

有没有更简单的方式来达到我的目标,或者通过WAMP别名来实现?


虚拟主机并不可怕,按照以下步骤设置即可。第一个设置完成后,下一个只需要两分钟即可完成。https://dev59.com/0GAg5IYBdhLWcg3wYaC6#23990618 - RiggsFolly
是的,你只需要在httpd-vhosts.conf文件中添加一些文本,然后在hosts文件中添加,但这仍然很麻烦。 - Pontiacks
4个回答

41
如果你使用Apache Vhost,你只需要执行以下命令:ngrok http -host-header=rewrite YOUR-LOCAL-DOMAIN:PORT。别忘了编辑hosts文件以解析@IP与YOUR-LOCAL-DOMAIN之间的关系。

这对我来说在子域名上有效。例如:sub.local.dev 谢谢! - JohnnyQ
1
如果这个方法不起作用,可以尝试:ngrok http -host-header=SUBDOMAIN.localhost PORT - ricks
2
为我工作:ngrok http --host-header=rewrite YOUR-LOCAL-DOMAIN:PORT - syahid246

16

我尝试了以下方法。

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

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

这里的8080是任何未使用的端口。localhost:8080指向xyz,然后打开另一个终端。

$ ./ngrok http 8080

通过这样做,ngrok将侦听您运行xyz8080端口。

希望对您有所帮助!


我已经在WordPress上尝试过了,我可以在浏览器中打开xxxxx.ngrok.io的页面,但在手机上它只显示文本而没有图像和样式。 - Ivan Topić
4
被低估的回答 - Logan
如果您无法看到图像和CSS样式,则可能在控制台中出现https错误,请尝试改用http链接。 - Stanley Umeanozie
2
这篇文章帮我省去了提问。我一直在尝试让ngrok指向本地主机上的子目录,并尝试了各种使用-host-header选项的方法,最终通过在子目录中运行php -S localhost:8080来解决问题,然后就可以执行ngrok http 8080了。 - hot_barbara

5

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

3

在将ngrok地址设置为指向本地80端口之后,您可以通过网站名称访问您的网站。

ngrok http -subdomain=dev 80

访问网站1:

dev.ngrok.io/website1

1
这仅在使用 ngrok 的付费订阅组合中才有效。 - AndrewRMillar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接