问题描述
在使用Jenkins的Docker容器时遇到了一个问题:Jenkins容器在重定向时会在URL后添加 “:80″,导致出现错误。当他移除 “:80” 后,一切都正常工作。用户尝试使用一个简单的Web应用程序进行了代理,没有出现问题。以下是用户的 docker-compose.yml
文件:https://pastebin.com/djJTuBZL。SSL证书已经正确签发,并且连接是安全的。用户使用的主机是正常运行且配置正确,端口80和443都已开放。容器暴露了端口8080,这与 VIRTUAL_PORT
是相同的。用户还提到,根据标准HTTP端口(例如 www.google.com:80
),访问带有 :80
的地址不应该引起任何问题,除非他漏掉了什么。用户在运行 docker-compose up
时,获取了日志:https://pastebin.com/NUbDL7PC。在尝试首次登录时,他移除了 :80
,然后加载页面的日志是:https://pastebin.com/0wxGDBzi。用户希望解决这个问题。
解决方案
请注意以下操作可能因版本不同而有所差异。建议在进行任何更改前备份您的数据。
步骤1:SSH隧道方式测试
如果你的Jenkins是全新的,你可以尝试通过SSH隧道直接进入容器的8080端口,并查看问题是否也在那里出现。这至少可以让你确认是Jenkins进行重定向还是Nginx进行了处理。以下是在终端中创建SSH隧道的步骤:
ssh -L 8080:localhost:8080 your_username@jenkins_server_ip
在上面的命令中,将 your_username
替换为您的用户名,jenkins_server_ip
替换为Jenkins服务器的IP地址。这将创建一个本地端口8080的SSH隧道,将流量从远程Jenkins服务器的8080端口转发到您的本地。
然后,您可以在浏览器中访问 http://localhost:8080
,看看是否还会出现重定向问题。
步骤2:调整Jenkins URL
在Jenkins中,您可以尝试调整 “Jenkins URL” 设置来解决重定向问题。这里有两个地方可以尝试进行设置更改:
- 登录Jenkins后,转到 “Manage Jenkins”(管理Jenkins)-> “Configure System”(配置系统)。在 “Jenkins Location”(Jenkins位置)部分,尝试更改 “Jenkins URL”。
- 检查 Jenkins 容器内的
jenkins_home/jenkins.model.JenkinsLocationConfiguration.xml
文件。查找jenkinsUrl
标签,并尝试调整其值。
尝试更改上述设置后,重新启动Jenkins容器并检查是否解决了重定向问题。
步骤3:检查反向代理配置
如果上述步骤未能解决问题,您需要检查反向代理的配置。确保您的反向代理服务器(通常是Nginx或Apache)正确地将流量转发到Jenkins容器的8080端口,并且没有额外的重定向设置。在Nginx配置中,您应该将 proxy_pass
指向 http://jenkins_container:8080
,其中 jenkins_container
是您的Jenkins容器名称或IP地址。
步骤4:检查其他设置
如果问题仍然存在,您可能需要进一步检查其他可能影响重定向的设置。可以检查Jenkins的插件设置、代理配置、网络配置等。确保所有的配置都与您的使用情况相匹配。
总结
通过尝试以上步骤,您应该能够解决Jenkins Docker容器在反向代理后在URL中添加 “:80” 的问题。请注意,不同版本的Jenkins和Docker可能会有些许差异,因此在进行任何更改之前,请务必备份您的数据,并根据您的具体情况进行调整。