我在端口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地址访问服务器?
连接被拒绝意味着客户端能够连接,但是服务器监听器拒绝了它,netstat -an
显示了dotnet进程监听127.0.0.1:5000,这意味着它只能从本地机器访问。解决方案是通过更改配置文件中applicationUrl的值并重新启动Web服务,将本地地址绑定到0.0.0.0而不是localhost。
在AWS EC2中,您应该将应用程序绑定到EC2实例的专用IP。