在Windows上使用带有IISExpress的ngrok

cvxl0en2  于 2022-11-12  发布在  Windows
关注(0)|答案(2)|浏览(160)

我习惯使用Mac,ngrok是轻而易举的事;您所需要做的就是指定一个端口,但我是IISExpress的新手,不知道如何正确使用ngrok和/或IIS。为了清楚起见,我从一个同事(他已经离开公司)那里继承了一台Windows计算机,并且在本地安装得很好。
本地url类似于:

thing.somedomain.com

在IIS的bindings部分,我得到了:

Type    Host Name               Port   IP Address
http    thing.somedomain.com    80     *

我使用此页面作为参考:https://www.twilio.com/blog/2014/03/configure-windows-for-local-webhook-testing-using-ngrok.html
这些说明看起来很合理,但对我来说不起作用。这些说明表明文件applicationhost.config需要为IIS进行修改。我找到了这个文件,并找到了需要ngrok的站点的正确部分。绑定信息与IIS GUI中的信息不匹配:

<binding protocol="http" bindingInformation="*:4085:localhost" />

根据说明,我已添加:

<binding protocol="http" bindingInformation="*:4085:whatever.ngrok.io" />

(Here每次我在Windows上运行ngrok时,我得到的都是ngrok.io,而不是ngrok.com,这看起来很奇怪。我试过两种方法都没有成功。)
我已经在IIS上重新启动了站点(在操作菜单中)。当我尝试从远程计算机访问ngrok url时,ngrok返回502 bad gateway,并且远程计算机显示:

Failed to complete tunnel connection

The connection to http://whatever.ngrok.io was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:4085.

Make sure that a web service is running on localhost:4085 and that it is a valid address.

The error encountered was: dial tcp 127.0.0.1:4085: ConnectEx tcp: No connection could be made because the target machine actively refused it.

当我尝试在本地访问localhost:4085时,我得到“此网页不可用”。当我尝试访问localhost:80时,我得到一个到IIS正在服务的另一个站点的重定向。当我尝试访问127.0.0.1:80时,我得到一个404错误。
我试过使用netstat -a -B,也试过与www.example.com关联的所有端口127.0.0.1,没有任何结果显示正确的站点(但thing.somedomain.com仍然正常工作)。
我完全迷惑了,不知道下一步该怎么做,也不知道问题出在哪里(我如何启动ngrok,我如何访问ngrok,绑定如何Map,IIS如何重新启动,防火墙问题,或者其他一些巫毒)。

3z6pesqy

3z6pesqy1#

因此,结果是ApplicationHost.config文件中没有任何要更改的内容,而且我查看的是错误的ApplicationHost.config文件(真实的文件通常隐藏在C:/Windows/System32/inetsrv/Config中,但您可以在记事本中从具有提升权限(以管理员身份运行)的命令提示符窗口打开它)。

<binding protocol="http" bindingInformation="*:80:thing.somedomain.com" />

也就是说,我需要改变的是调用ngrok的方式:

ngrok http -host-header=thing.somedomain.com:80

就这样,我还允许外部流量访问主机名:

netsh http add urlacl url=http://thing.somedomain.com/ user=everyone
knpiaxh1

knpiaxh12#

有一种方法可以让它变得更简单。
只需像这样启动ngrok

ngrok http --host-header=rewrite localhost:63254

相关问题