Nginx报connect() failed(111)错误,Java后端502 Bad Gateway问题求助
排查DigitalOcean Droplet上Nginx 502(连接上游被拒绝)问题
从你提供的Nginx日志connect() failed (111: Connection refused)可以明确,Nginx无法连接到后端的Java服务(监听127.0.0.1:8080),按以下步骤逐一排查:
1. 确认Java后端服务是否正常运行
- 执行命令查看Java进程:
如果没有找到你的应用进程,说明服务未启动或已崩溃。尝试启动服务,同时查看启动日志排查失败原因(比如内存不足、配置错误)。ps aux | grep java - 如果是用systemd管理服务(比如Tomcat、自定义Spring Boot服务),执行:
查看服务状态和报错信息。systemctl status your-service-name
2. 检查8080端口是否被监听
执行命令确认端口占用情况:
ss -tulpn | grep 8080
- 如果没有输出,说明后端服务没有绑定到8080端口,可能是服务启动参数错误、配置文件里端口被修改,或者服务启动失败。
- 如果有输出,确认监听端口的进程ID(PID)是否对应你的Java服务,避免端口被其他程序占用。
3. 本地测试后端服务连通性
直接在服务器上发起请求,绕过Nginx验证后端是否可用:
curl http://127.0.0.1:8080/user/login
- 如果请求失败(比如连接拒绝、500错误),说明问题出在Java服务本身,和Nginx无关,重点排查服务的启动日志、数据库连接、代码逻辑。
- 如果请求正常,再检查Nginx的配置和网络转发规则。
4. 排查服务器资源不足问题
DigitalOcean Droplet内存不足是常见的服务崩溃原因:
- 查看内存使用情况:
free -h - 检查是否有OOM(内存溢出)导致服务被系统杀掉:
如果有OOM记录,说明Java服务内存配置过高或服务器内存不足,可考虑升级Droplet配置,或者调整Java的JVM参数(比如dmesg | grep -i oom-Xmx、-Xms)降低内存占用。
5. 检查Java服务日志
找到你的Java应用的日志文件(比如Tomcat的/var/log/tomcat/catalina.out,Spring Boot的自定义日志路径),查看日志中是否有启动失败、运行时异常(比如数据库连接失败、文件权限不足、依赖缺失等)。
附:你提供的Nginx配置
server { listen 443 ssl; server_name vplannerweddings.com www.vplannerweddings.com; root /var/www/vplannerweddings.com/html; ssl_certificate /root/namecheapconfigs/vplannerweddings_com_chain.crt; ssl_certificate_key /root/vplannerweddings_com.key; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
附:Nginx错误日志
2023/03/08 11:29:36 [error] 8292#8292: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 91.205.48.122, server: vplannerweddings.com, request: "POST /user/login HTTP/1.1", upstream: "http://127.0.0.1:8080/user/login", host: "vplannerweddings.com"
内容的提问来源于stack exchange,提问作者Дамир Эсенов
相关产品推荐
相关产品推荐

