在Windows上使用ngrok和IISExpress

时间:2015-04-30 16:18:34

标签: iis ngrok

我以前习惯使用Mac,而ngrok是轻而易举的;您需要做的就是指定一个端口,但我是IISExpress的新手,我无法弄清楚如何正确使用ngrok和/或IIS。为了清楚起见,我从同事那里继承了一台Windows机器(已离开公司),并且该设置在本地运行良好。

本地网址类似于:

thing.somedomain.com

在IIS的绑定部分,我得到了:

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

说明似乎合理,但它们对我不起作用。这些说明表明需要为IIS更改文件applicationhost.config。我找到了这个文件,找到了我需要ngrok的网站的正确部分。绑定信息与IIS gui中的内容不匹配:

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

根据说明,我已添加:

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

(这里每当我在Windows上运行ngrok时,我会得到ngrok.io而不是ngrok.com,这看起来很奇怪。我已经尝试过两种方式都没有运气。)

我已在IIS上重新启动了该站点(在操作菜单中)。当我尝试从远程计算机访问ngrok URL时,ngrok返回502坏网关,远程计算机显示:

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时,我得到&#34;此网页不可用&#34;。当我尝试转到localhost:80时,我会重定向到IIS正在服务的其他站点。当我尝试127.0.0.1:80时,我收到404错误。

我尝试过使用netstat -a -b,并尝试了与127.0.0.1相关的所有端口,但没有任何内容显示正确的网站(但仍然是.somedomain.com仍能正常工作)。

我完全神秘化了,并且不知道下一步该尝试什么,或者问题出在哪里(我是如何开始ngrok,我是如何访问ngrok的,如何映射绑定,IIS重启,防火墙问题或其他一些巫术。这应该很简单!

2 个答案:

答案 0 :(得分:10)

所以事实证明ApplicationHost.config文件中没有任何变化,而且我正在查看错误的ApplicationHost.config文件(真正的文件通常在C:/ Windows / System32 / inetsrv /中被隐藏起来配置,但您可以从具有提升权限的命令提示符(以管理员身份运行)在记事本中打开它。实际的绑定信息是:

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

与IIS显示的内容相匹配。那就是说,我需要改变的是我如何调用ngrok:

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

就是这样。我还允许外部流量到主机名:

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

答案 1 :(得分:0)

有一种方法可以让它更容易。假设您的 IISExpress 网站是 http://localhost:63254

就这样开始ngrok

ngrok http -host-header=rewrite localhost:63254