如何使用运行IIS Web服务器的公共IP访问我的EC2实例?

时间:2017-12-19 21:09:44

标签: amazon-web-services iis amazon-ec2

我在端口5000上的EC2 Ubuntu 16.04实例中运行了IIS服务器。当我尝试使用实例的公共IP从其他计算机或网络访问它时,它不允许我连接。

我一直在搜索并查看类似问题但没有成功。

很多人说它与安全组和实例上的开放端口有关,但据我所知,我已经这样做了。我已经检查了实例正在使用的安全组,这里是我的规则

enter image description here

我已经确认应用程序正在使用curl从服务器获取响应,这似乎工作正常并产生正确的输出。

telnet localhost 5000也有效。

将ICMP规则添加到安全组后,我可以使用公共IP成功ping服务器。

ufw已停用。

我尝试将端口添加到iptables,应用程序似乎正在侦听正确的端口。

Iptables的:

Iptables

enter image description here

Webserver启动配置:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://0.0.0.0:50135/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "API": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/test",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://0.0.0.0:5000/"
    }
  }
}

我也尝试过更改applicationUrl,但这似乎没有做任何事情。

有谁知道为什么我无法从公共IP地址访问服务器?

2 个答案:

答案 0 :(得分:0)

连接被拒绝意味着客户端能够连接,但服务器侦听器拒绝它,netstat -an显示dotnet进程侦听127.0.0.1:5000,这意味着它只能从本地计算机访问。 解决方法是通过更改配置文件中applicationUrl的值并重新启动Web服务,将本地地址绑定到0.0.0.0而不是localhost。

答案 1 :(得分:0)

在AWS EC2中,您应该将应用程序绑定到EC2实例的专用IP

  1. 从命令提示符处执行 ipconfig 命令并获取私有 IP。
  2. 将您的应用程序配置为绑定到该专用IP
  3. 重新启动IIS
  4. 确保您的EC2实例的安全组具有入站 规则允许从" Anywhere"
  5. 访问端口5000