我在同一Windows 2012 R2操作系统上设置了2个不同版本的Jenkins。 Jenkins v1.590在Apache Tomcat Web服务器后面运行,而Jenkins 2.164作为Windows服务运行。这两个Jenkins实例都可以通过HTTPS访问。
为完成这项工作,我将Nginx作为反向代理运行,它将所有请求重定向到https://jenkins.company.com/jenkins到Tomcat服务器和https://jenkins2.company.com到Jenkins 2.164 Windows服务。
除了在Jenkins v1.590上的异常行为之外,所有组件都运行良好。我遇到的问题是,当我访问Manage Jenkins下的一些链接时,它们会重定向到localhost。
以下链接可以正常工作:
然后有些链接不起作用:
和许多其他人。
如果我复制到新窗口中并在末尾添加一个/,我仍然可以访问这些链接,例如:https://jenkins.company.com/jenkins/configureSecurity/可以正常工作。
我不确定在Jenkins v1.590中为什么会出现这些差异。请注意,我是在Nginx安装之前不久进行此更改的,所有链接都工作正常。
以下是我的配置:
Nginx:
upstream tomcat_server {
# Tomcat is listening on default 8080 port
server 127.0.0.1:8080 fail_timeout=0;
}
server {
listen 443 ssl;
server_name jenkins.company.com/jenkins;
ssl_certificate C:/nginx1.15.12/certs/jenkins/server.crt;
ssl_certificate_key C:/nginx1.15.12/certs/jenkins/server.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
# note, there is not SSL here! plain HTTP is used
proxy_pass http://tomcat_server;
}
}
Tomcat配置:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyName="localhost"
proxyPort="443"
scheme="https"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
答案 0 :(得分:0)
好,我知道了。我必须将Tomcat服务器上的proxyName更改为url。最终成为解决方案:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
proxyName="jenkins.company.com"
proxyPort="443"
scheme="https"/>