我在Docker容器中运行Jenkins并配置nginx(在另一个容器中运行)充当反向代理。我的目标是让Jenkins(在其容器中侦听端口8080
)可以在运行Docker引擎的主机上的端口8081
上访问。
所以我基本上想要做的是使用nginx将所有请求转发到localhost:8081
到jenkins-docker-container:8080
基本上一切正常,但Jenkins似乎不时重定向到localhost
(没有端口)。这是我做的:
我将http://localhost:8081
设置为Jenkins配置中的Jenkins网址
我使用以下nginx jenkins配置:
server {
listen 8081;
server_name "localhost";
access_log off;
location / {
proxy_pass http://jenkins-master:8080;
proxy_redirect http://jenkins-master:8080 $scheme://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-Port 8081;
proxy_max_temp_file_size 0;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffer_size 8k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
这是我的Docker Swarm配置
jenkinsmaster:
build: jenkins-master
image: michaellihs/jenkins
ports:
- 50000:50000
secrets:
- jenkins-user
- jenkins-pass
volumes:
- jenkinsdata:/var/log/jenkins
- jenkinsconf:/var/jenkins_home
- jenkinsjobs:/var/jenkins_jobs
networks:
nw001:
aliases:
- jenkins-master
jenkinsnginx:
build: jenkins-nginx
image: michaellihs/jenkinsnginx
ports:
- 8081:8081
networks:
- nw001
我有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
我不确定你应该使用proxy_redirect
。我们让詹金斯没有它,一切正常,就像这样:
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://jenkins:8080;
}
我刚刚检查了我们的设置 - 我们没有对Jenkins方面进行进一步的配置调整(就像Jira需要的tomcat一样),所以你的重定向可能是由proxy_redirect
选项引起的。