无法通过公网IP访问Spring Boot接口,求排查配置问题
Spring Boot应用绑定地址限制
默认情况下,Spring Boot可能仅绑定localhost(127.0.0.1),此时仅本地请求能访问,网关转发的公网请求会被拒绝。
排查:查看应用启动日志,确认监听地址是否为0.0.0.0;若不是,在application.properties或application.yml中添加配置server.address=0.0.0.0,重启应用后再测试。网关端口转发的目标IP错误
若本地主机存在多个网卡(如有线、无线),网关配置的内部主机IP可能并非运行Spring Boot的主机的正确内网IP。
排查:执行ip addr(Linux)或ipconfig(Windows)获取本地主机的内网IP;登录网关管理后台,检查端口转发规则中的「内部主机IP」是否与该值完全匹配。运营商CGNAT限制
即使在线工具显示端口开放,若你的公网IP是运营商共享的CGNAT地址,外部请求无法直接映射到你的主机。
排查:登录网关管理后台查看网关的公网IP,与在线工具显示的IP对比;若不一致,说明处于CGNAT环境,需联系运营商申请独立公网IP,或使用内网穿透工具。本地主机的其他防火墙规则拦截
除了ufw,可能存在iptables等底层防火墙规则拦截请求,或ufw规则存在冲突。
排查:临时关闭ufw(执行sudo ufw disable),测试公网访问是否正常;若恢复正常,检查ufw规则是否存在重复或冲突,重新配置后启用;若仍无法访问,执行sudo iptables -L查看是否有拒绝8193端口的规则。网关端口转发规则未生效
网关的端口转发规则可能未保存、未启用,或存在优先级更高的拒绝规则。
排查:重启网关设备,确认规则已保存并启用;检查网关的防火墙规则,确保没有优先拦截8193端口的配置。请求路径或环境差异
公网访问时可能存在路径拼写错误,或请求携带的Headers/参数与本地测试不一致(虽然本地正常,但公网转发可能存在代理修改请求的情况)。
排查:使用curl在外部网络(如手机流量)执行请求,查看返回的具体错误码(如404、502、Connection refused),根据错误信息定位问题;对比本地请求和公网请求的完整URL、Headers是否一致。
内容的提问来源于stack exchange,提问作者it.drive.view

