修复Jenkins返回502网关错误和(104: 连接被对等方重置)错误

61次阅读
没有评论

问题描述

在服务器进行云提供商的维护计划后,服务器重启后,我的Jenkins无法从Web访问。我使用了Nginx,并在检查日志时找到了以下错误信息:

/var/log/nginx/error.log

2018/03/26 16:11:00 [error] 21689#21689: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 139.139.139.139, server: jenkins.domain.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "jenkins.domain.com"
2018/03/26 16:11:00 [error] 21689#21689: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 139.139.139.139, server: jenkins.domain.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8080/favicon.ico", host: "jenkins.domain.com", referrer: "http://jenkins.domain.com/"

以下是我的Nginx配置文件:

upstream app_server {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {
    listen 80;
    server_name jenkins.domain.com;
    root /var/www/jenkins.domain.com;

    location ~ /\.well-known/acme-challenge {
        default_type "text/plain";
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://app_server;
            break;
        }
    }
}

我想知道这个问题的原因,以及可能的解决方法。非常需要大家的帮助,谢谢!

解决方案

请注意以下操作注意版本差异及修改前做好备份。

检查后端服务状态

如果在系统最近重新启动并且代理服务器出现502/503错误,很可能是后端服务未能启动。

根据你的操作系统/发行版使用适当的工具(例如systemctlservice/chkconfigstop/start/restart/etc.),执行以下操作:

  1. 确认后端服务(在此情况下是Jenkins)已配置为开机启动。如果没有启用,请启用它。
  2. 启动后端服务。
  3. 如果后端服务启动失败,请检查应用程序日志以查找错误的源头。对于Linux上的Jenkins,日志位于/var/log/jenkins/jenkins.log

问题可能的原因

  1. 未完全启动的后端服务:如果后端服务(Jenkins)在Nginx代理尝试连接时尚未完全启动,会导致连接重置错误。确保后端服务已完全启动,特别是当它以Docker容器形式运行时。

  2. 防火墙或网络问题:可能存在防火墙或网络问题,导致代理服务器无法与后端服务通信。检查防火墙规则和网络配置,确保流量可以正常流动。

  3. 端口冲突:请确保后端服务(Jenkins)正在侦听Nginx配置中指定的端口(例如8080端口)。

重新启动服务

有时候,重新启动相关服务可能会解决问题。首先,尝试重启Jenkins和Nginx服务,然后观察是否仍然出现错误。

与Docker相关的注意事项

如果你在Docker容器中运行Jenkins和Nginx,可能需要注意以下问题:

  1. 容器依赖关系:确保Jenkins容器在Nginx容器之前启动,以便Nginx能够正确连接到Jenkins。你可以使用Docker Compose的depends_on属性来管理容器的启动顺序。

  2. 网络配置:在Docker环境中,确保容器之间的网络配置正确,以便Nginx容器能够与Jenkins容器通信。

寻求更多帮助

如果以上解决方案未能解决问题,建议你检查后端服务的详细日志,以获取更多关于连接重置问题的信息。如果问题仍然存在,你可能需要在相关社区或论坛上寻求更多帮助,提供更多详细信息以便其他人能够更好地帮助你。

总结

当出现Jenkins返回502网关错误和(104: 连接被对等方重置)错误时,可能的原因包括未完全启动的后端服务、防火墙或网络问题以及端口冲突。通过检查后端服务状态、重新启动相关服务以及处理与Docker相关的注意事项,你可以尝试解决这个问题。如果问题仍然存在,可以在相关社区或论坛上尋求更多帮助,提供详细信息以便其他人协助你解决问题。

希望这些解决方案能帮助你成功解决问题,使你的Jenkins服务器能够恢复正常运行。

正文完