Files
rlz/解决Postman连接问题.txt

190 lines
5.2 KiB
Plaintext
Raw Normal View History

2026-01-26 15:02:59 +08:00
========================================
解决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 "</dev/tcp/101.43.95.130/8039" && echo "✓ 端口开放" || echo "✗ 端口未开放或无法访问"
# 测试2: 测试HTTP连接
echo ""
echo "2. 测试HTTP连接:"
curl -v --connect-timeout 5 http://101.43.95.130:8039/appLogin \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin&password=admin123" 2>&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. 端口是否被其他程序占用
========================================