# 故障排查指南 ## 连接超时问题排查 如果访问 `http://101.43.95.130:3006` 时出现连接超时(ERR_CONNECTION_TIMED_OUT),请按以下步骤排查: ### 1. 检查容器是否运行 ```bash # 查看容器状态 docker ps -a | grep workdizhi-web # 或使用docker-compose docker-compose ps ``` **如果容器没有运行:** ```bash # 启动容器 docker-compose up -d # 或使用docker命令 docker start workdizhi-web ``` ### 2. 检查容器日志 ```bash # 查看容器日志,检查是否有错误 docker-compose logs -f # 或 docker logs -f workdizhi-web ``` ### 3. 检查端口监听状态 ```bash # 检查3006端口是否在监听 netstat -tlnp | grep 3006 # 或 ss -tlnp | grep 3006 # 或 lsof -i :3006 ``` **如果端口没有监听,检查:** - 容器是否正常启动 - docker-compose.yml 中的端口映射是否正确 ### 4. 检查防火墙配置 #### CentOS/RHEL 7+ (firewalld) ```bash # 查看防火墙状态 systemctl status firewalld # 如果防火墙开启,需要开放3006端口 firewall-cmd --permanent --add-port=3006/tcp firewall-cmd --reload # 验证端口是否开放 firewall-cmd --list-ports ``` #### Ubuntu/Debian (ufw) ```bash # 查看防火墙状态 ufw status # 开放3006端口 ufw allow 3006/tcp # 重新加载 ufw reload ``` #### iptables ```bash # 开放3006端口 iptables -A INPUT -p tcp --dport 3006 -j ACCEPT iptables-save ``` ### 5. 检查云服务器安全组(重要!) 如果使用的是云服务器(阿里云、腾讯云、AWS等),需要在控制台配置安全组规则: 1. 登录云服务器控制台 2. 找到对应的服务器实例 3. 进入"安全组"配置 4. 添加入站规则: - 协议:TCP - 端口:3006 - 源:0.0.0.0/0(允许所有IP访问,或指定特定IP) - 动作:允许 ### 6. 本地测试 在服务器上测试本地访问: ```bash # 测试本地3006端口 curl http://localhost:3006 # 或 curl http://127.0.0.1:3006 # 如果本地可以访问,说明容器正常,问题在防火墙或安全组 ``` ### 7. 检查Docker服务状态 ```bash # 检查Docker服务是否运行 systemctl status docker # 如果未运行,启动Docker systemctl start docker systemctl enable docker ``` ### 8. 重新构建和启动 如果以上都正常,尝试重新构建和启动: ```bash # 停止并删除旧容器 docker-compose down # 重新构建镜像 docker-compose build --no-cache # 启动服务 docker-compose up -d # 查看日志 docker-compose logs -f ``` ### 9. 验证部署 部署成功后,应该能看到: - 容器状态为 `Up` - 端口映射正确:`0.0.0.0:3006->80/tcp` - 日志无错误信息 ## 快速检查脚本 可以运行以下命令快速检查: ```bash #!/bin/bash echo "=== 检查容器状态 ===" docker ps -a | grep workdizhi-web echo -e "\n=== 检查端口监听 ===" netstat -tlnp | grep 3006 || ss -tlnp | grep 3006 echo -e "\n=== 检查防火墙 ===" if command -v firewall-cmd &> /dev/null; then firewall-cmd --list-ports | grep 3006 elif command -v ufw &> /dev/null; then ufw status | grep 3006 fi echo -e "\n=== 测试本地访问 ===" curl -I http://localhost:3006 2>&1 | head -1 ``` ## 常见问题 ### Q: 容器启动后立即退出 **A:** 检查日志:`docker logs workdizhi-web`,可能是镜像构建失败或文件缺失 ### Q: 本地可以访问,外网无法访问 **A:** 检查防火墙和安全组配置,确保3006端口已开放 ### Q: 端口被占用 **A:** 检查是否有其他服务占用3006端口,或修改docker-compose.yml使用其他端口 ### Q: 容器运行但无法访问 **A:** 检查Nginx配置,确保容器内Nginx正常启动