Files
rlz/解决Postman连接问题.txt
2026-01-26 15:02:59 +08:00

190 lines
5.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
========================================
解决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. 端口是否被其他程序占用
========================================