在AWS RHEL 8 EC2上部署.NET 5 Web API后无法通过公网IP访问
AWS RHEL 8实例部署.NET 5 Web API公网无法访问解决方案
你遇到的问题由三类常见配置缺失导致,按以下步骤逐一排查修复即可:
1. 修正Kestrel监听地址配置
当前启动日志显示Kestrel仅绑定了localhost:5000,仅允许EC2实例本地访问,公网请求无法触达,两种修改方式二选一即可:
- 启动时直接指定绑定所有网卡接口,运行命令修改为:
dotnet webapp2.dll --urls http://0.0.0.0:5000 - 固定到配置文件:在项目的
appsettings.json中添加以下节点,重新发布上传后生效:"Kestrel": { "Endpoints": { "Http": { "Url": "http://0.0.0.0:5000" } } }
2. 放行AWS EC2安全组5000端口入站规则
- 登录AWS EC2控制台,找到对应实例绑定的安全组
- 添加入站规则:类型选自定义TCP,端口范围填
5000,源地址按需配置(测试阶段可填0.0.0.0/0允许所有IP访问,生产环境建议限制为指定IP段)
3. 放行RHEL 8系统firewalld防火墙5000端口
登录EC2实例依次执行以下命令:
- 永久放行5000端口TCP请求:
firewall-cmd --add-port=5000/tcp --permanent - 重载防火墙规则使配置生效:
firewall-cmd --reload - 验证配置是否生效,输出中包含
5000/tcp即为配置成功:firewall-cmd --list-ports
全部配置完成后重启.NET服务,即可通过公网IP加5000端口正常访问接口。
内容的提问来源于stack exchange,提问作者Sudhir Jangam
相关产品推荐
相关产品推荐

