我在端口5000上的EC2 Ubuntu 16.04实例中运行了IIS服务器。当我尝试使用实例的公共IP从其他计算机或网络访问它时,它不允许我连接。
我一直在搜索并查看类似问题但没有成功。
很多人说它与安全组和实例上的开放端口有关,但据我所知,我已经这样做了。我已经检查了实例正在使用的安全组,这里是我的规则
我已经确认应用程序正在使用curl从服务器获取响应,这似乎工作正常并产生正确的输出。
telnet localhost 5000
也有效。
将ICMP规则添加到安全组后,我可以使用公共IP成功ping服务器。
ufw
已停用。
我尝试将端口添加到iptables,应用程序似乎正在侦听正确的端口。
Iptables的:
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地址访问服务器?
答案 0 :(得分:0)
连接被拒绝意味着客户端能够连接,但服务器侦听器拒绝它,netstat -an
显示dotnet进程侦听127.0.0.1:5000,这意味着它只能从本地计算机访问。
解决方法是通过更改配置文件中applicationUrl的值并重新启动Web服务,将本地地址绑定到0.0.0.0而不是localhost。
答案 1 :(得分:0)
在AWS EC2中,您应该将应用程序绑定到EC2实例的专用IP 。