260

从以前版本的问题中,有这样的:Browse website with ip address 而不是 localhost,它几乎概述了我到目前为止所做的事情......我已经让本地 IP 正常工作。然后我找到了ngrok,显然我不需要通过IP连接。


我想要做的是将我在 localhost 上运行的网站暴露给互联网。我找到了一个可以做到这一点的工具:ngrok。

在 Visual Studio 中运行该网站,该网站在 localhost/port# 上启动。我在命令行中运行命令“ngrok http port#”。一切似乎都开始正常。我生成了几个 URL,并且 ngrok 检查 url (localhost:4040) 有效。

唯一的问题是,当我转到生成的 URL 时,我收到 HTTP 错误 400:错误请求无效主机名。这是一个与我运行“ngrok http wrongport#”时不同的错误,这是一个找不到主机的错误......所以我认为正在发生一些好事。我就是说不出来是什么...

通过隧道服务将我的网站暴露在互联网上时,我是否缺少步骤?如果有,我在 ngrok 文档中找不到。

4

7 回答 7

698

使用 ngrok 解决此问题。用 inconshrevable 的话来说,一些应用程序在看到与预期不同的主机头时会生气。

运行以下命令应该可以解决问题:

ngrok http [port] -host-header="localhost:[port]"
于 2015-06-02T16:16:57.280 回答
66

以下命令将解决问题

ngrok http -host-header=localhost 8080
于 2017-08-07T10:42:03.127 回答
42

这对我不起作用。您可以执行以下操作:

对于 IIS Express

在 VS 2015 中:转到.vs\config\applicationhost.config项目中的文件夹

在 VS 2013 及更早版本中:转到 %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

找到上面写着的绑定:

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

对我来说,这是一个在 5219 端口上运行的项目

将其更改为

  <binding protocol="http" bindingInformation="*:5219:" />

IIS Express 现在将接受该端口上的所有传入连接。

缺点:您需要以管理员身份运行 IIS Express。

或者你可以在 Ngrok 中重写主机头:

ngrok.exe http -host-header=rewrite localhost:5219
于 2015-11-24T03:02:27.290 回答
19

为此https

ngrok http https://localhost:<PORT> -host-header="localhost:<PORT>"

于 2020-01-17T14:17:22.673 回答
2

对我来说最简单的事情是使用iisexpress-proxy + ngrok。

首先我iisexpress-proxy使用 npm 全局安装

npm install -g iisexpress-proxy

然后我用它代理我的本地主机。比如说我的网站正在运行3003

iisexpress-proxy 3003 to 1234512345我要代理的新 http 端口在哪里。

然后我可以在上面运行 ngrok。

./ngrok.exe http 12345

它只是工作!

但我认为它只适用于http. 现在我不习惯https测试,但即使它有效,通常也像往常一样做很多工作。

于 2019-04-09T19:22:13.680 回答
0

尝试使用Global Infrastructure > Locations中的不同位置

ngrok http -region eu 8080

您可以使用http://localhost:4040上的 ngrok 流量检查器发出请求并查看通过隧道的任何流量。

在命令行中

ngrok http -region eu 8080 --log=stdout                                                                                                                                                 

如果一个区域失败,请尝试另一个区域。

ngrok 在世界各地的数据中心运行隧道服务器。给定区域内数据中心的位置可能会更改,恕不另行通知(例如,欧洲服务器可能会从法兰克福移至伦敦)。

  • us - 美国(俄亥俄州)
  • eu - 欧洲(法兰克福)
  • ap - 亚太地区(新加坡)
  • au - 澳大利亚(悉尼)
  • sa - 南美洲(圣保罗)
  • jp - 日本(东京)
  • 在 - 印度(孟买)
于 2021-12-07T05:38:09.687 回答
-7

脚步。

  1. 从 ngrok.exe 目录在控制台上运行命令。ngrok http 端口即 ngrok http 80 https://www.screencast.com/t/oyuEPlR6Z 设置

  2. Ngrok 网址到您的应用程序。

它将为您的应用程序创建一个隧道。

谢谢 。

于 2018-05-11T12:17:40.950 回答