在Windows上使用ngrok和IISExpress

Kat*_*rne 9 iis ngrok

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

本地网址类似于:

thing.somedomain.com
Run Code Online (Sandbox Code Playgroud)

在IIS的绑定部分,我有:

Type    Host Name               Port   IP Address
http    thing.somedomain.com    80     *
Run Code Online (Sandbox Code Playgroud)

我已经使用此页面作为参考: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" />
Run Code Online (Sandbox Code Playgroud)

根据说明,我补充说:

<binding protocol="http" bindingInformation="*:4085:whatever.ngrok.io" />
Run Code Online (Sandbox Code Playgroud)

(这里每当我在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.
Run Code Online (Sandbox Code Playgroud)

当我尝试在本地访问localhost:4085时,我收到"此网页不可用".当我尝试转到localhost:80时,我会重定向到IIS正在服务的其他站点.当我尝试127.0.0.1:80时,我收到404错误.

我已经尝试过使用netstat -a -b,并尝试了所有与127.0.0.1相关的端口,并且没有任何东西显示正确的站点(但仍然是thing.somedomain.com仍能正常工作).

我完全神秘,并且不知道接下来要尝试什么,或者问题出在哪里(关于我如何开始使用ngrok,我如何访问ngrok,如何映射绑定,以及IIS如何重新启动,防火墙问题,或其他一些伏都教).这应该是血腥的简单!

Kat*_*rne 12

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

<binding protocol="http" bindingInformation="*:80:thing.somedomain.com" />
Run Code Online (Sandbox Code Playgroud)

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

ngrok http -host-header=thing.somedomain.com:80
Run Code Online (Sandbox Code Playgroud)

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

netsh http add urlacl url=http://thing.somedomain.com/ user=everyone
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,我没有运行NETSH命令,我使用以下内容初始化Ngrok for IISExpress在端口12345上运行:`ngrok http -host-header = rewrite localhost:12345` (4认同)

Pav*_*lev 8

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

像这样开始ngrok

ngrok http --host-header=rewrite localhost:63254
Run Code Online (Sandbox Code Playgroud)