======================================== 解决Postman无法连接公网IP的问题 ======================================== 一、问题诊断 ----------- 从Postman截图可以看到错误: "Could not get any response" 这表明是网络连接问题,而不是认证问题。 检查结果: ✓ 服务器正在运行 (监听在 :::8039) ✓ 本地localhost可以访问 ✗ 公网IP 101.43.95.130:8039 无法访问 二、可能的原因 ------------- 1. 防火墙未开放8039端口 (最可能) 2. 云服务器安全组未开放8039端口 3. 服务器只监听在localhost,未绑定到公网IP 三、解决方案 ----------- 【方案1: 开放防火墙端口 (推荐)】 如果使用firewalld: sudo firewall-cmd --permanent --add-port=8039/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-ports # 验证端口已添加 如果使用iptables: sudo iptables -A INPUT -p tcp --dport 8039 -j ACCEPT sudo service iptables save # CentOS 6 # 或 sudo iptables-save > /etc/sysconfig/iptables # CentOS 7 【方案2: 配置云服务器安全组】 如果使用腾讯云/阿里云等云服务器: 1. 登录云服务器控制台 2. 找到"安全组"配置 3. 添加入站规则: - 协议: TCP - 端口: 8039 - 源: 0.0.0.0/0 (允许所有IP访问) - 或限制为特定IP 【方案3: 临时关闭防火墙测试】 仅用于测试,生产环境不推荐: sudo systemctl stop firewalld # 临时关闭 # 测试完成后记得开启 sudo systemctl start firewalld 四、验证步骤 ----------- 1. 开放端口后,在服务器上测试: curl http://localhost:8039/appLogin -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "username=admin&password=admin123" 2. 从外部测试 (使用另一台机器或手机): curl http://101.43.95.130:8039/appLogin -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "username=admin&password=admin123" 3. 在Postman中测试: - Method: POST - URL: http://101.43.95.130:8039/appLogin - Headers: Content-Type: application/x-www-form-urlencoded - Body: username=admin&password=admin123 五、快速修复命令 -------------- 【CentOS 7 (firewalld)】 sudo firewall-cmd --permanent --add-port=8039/tcp sudo firewall-cmd --reload echo "端口8039已开放" 【验证端口是否开放】 sudo firewall-cmd --list-ports | grep 8039 # 应该显示: 8039/tcp 【如果使用iptables】 sudo iptables -I INPUT -p tcp --dport 8039 -j ACCEPT sudo service iptables save 六、云服务器安全组配置 -------------------- 【腾讯云】 1. 登录腾讯云控制台 2. 云服务器 → 安全组 3. 选择对应的安全组 4. 入站规则 → 添加规则 - 类型: 自定义 - 来源: 0.0.0.0/0 - 协议端口: TCP:8039 - 策略: 允许 【阿里云】 1. 登录阿里云控制台 2. 云服务器ECS → 网络与安全 → 安全组 3. 配置规则 → 入方向 → 添加安全组规则 - 端口范围: 8039/8039 - 授权对象: 0.0.0.0/0 - 协议类型: TCP 七、测试连接脚本 -------------- 创建测试脚本 test_public_access.sh: #!/bin/bash echo "测试公网访问..." echo "" # 测试1: 检查端口是否开放 echo "1. 检查端口8039是否开放:" timeout 3 bash -c "&1 | head -20 八、常见问题 ----------- Q1: 开放端口后仍然无法访问 A1: 检查云服务器安全组是否也开放了端口 Q2: 如何确认是防火墙问题还是安全组问题? A2: - 临时关闭防火墙测试: sudo systemctl stop firewalld - 如果关闭防火墙后可以访问,说明是防火墙问题 - 如果仍然无法访问,说明是安全组问题 Q3: 服务器内网IP可以访问吗? A3: 如果服务器内网IP是 10.0.4.13,可以尝试: http://10.0.4.13:8039/appLogin (仅在同一局域网内可访问) Q4: 如何查看当前开放的端口? A4: sudo firewall-cmd --list-ports # firewalld sudo netstat -tlnp | grep 8039 # 查看监听端口 sudo ss -tlnp | grep 8039 # 另一种方式 九、完整操作流程 -------------- 1. 开放防火墙端口: sudo firewall-cmd --permanent --add-port=8039/tcp sudo firewall-cmd --reload 2. 配置云服务器安全组 (如果使用云服务器) 3. 验证端口开放: sudo firewall-cmd --list-ports | grep 8039 4. 测试连接: curl http://101.43.95.130:8039/appLogin -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "username=admin&password=admin123" 5. 在Postman中测试 十、注意事项 ----------- 1. 生产环境建议限制访问IP,不要开放给所有IP (0.0.0.0/0) 2. 如果使用HTTPS,需要开放443端口 3. 定期检查防火墙规则,确保安全 4. 建议使用Nginx反向代理,而不是直接暴露应用端口 ======================================== 如果问题仍然存在,请检查: 1. 云服务器安全组配置 2. 服务器网络配置 3. 服务器是否在运行 4. 端口是否被其他程序占用 ========================================