docker - Jenkins URL localhost:8080 将我重定向到 localhost,破坏网页
问题描述
我在使用 Jenkins 代理时遇到问题。Jenkins 容器位于我的 NGINX 代理后面。我在http://localhost:8000访问它。登录后,我被踢到http://localhost。Jenkins 上的一些链接也做同样的事情,并删除了制动屏幕的端口。我从我的 Manage Jenkins 页面上的标题中得到错误,并尝试添加 proxy_pass URL,但没有任何效果。
我的 NGINX conf 文件是这样的......
server {
listen 8000;
server_name "";
access_log off;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Host $host;
proxy_pass http://jenkins_master_1:8080;
proxy_redirect http://jenkins_master_1:8080 http://localhost:8000;
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-compose.yml 文件是这样的......
version: '3'
# Services are the names of each container
services:
master:
# Where to build the container from a Dockerfile
build: ./jenkins-master
# Open which ports to
ports:
- "50000:50000"
# Connecting volumes to in a container
volumes:
- jenkins-log:/var/log/jenkins
- jenkins-data:/var/jenkins_home
# Adding the service to a network
networks:
- jenkins-net
nginx:
build: ./jenkins-nginx
ports:
- "8000:8000"
networks:
- jenkins-net
# List of volumes to create
volumes:
jenkins-data:
jenkins-log:
# List of netorks to create
networks:
jenkins-net:
我正在尝试学习 Docker 和 Jenkins,并且正在学习一个教程,jenkins_master_1 来自 docker-compose。任何帮助或指导都会非常感激。
谢谢
解决方案
假设 1:NGINX 在你的应用前面,接受 80 端口的连接,然后传递到后端的 8080 端口。
假设 2:Jenkins 应用程序和 NGINX 在同一台服务器上。
如果您使用代理,您最初应该从端口 80 访问它,而不是 8080。
NGINX 在 80 上获取请求,然后传递到后端 8080。如果您使用代理,则从浏览器中看不到 8080。如果您使用的是 8080 并且它正在做某事,那么您将直接进入应用程序......也就是绕过代理。
那么,如何开始解决它:
(1.) 导航到http://localhost,它应该通过您的代理(如果设置正确)
(2.) 在管理 Jenkins-> 配置系统 -> Jenkins URL 中,确保 URL 设置为http://localhost
(3.) 最好在 NGINX 配置中使用 FQDN 作为服务器名称,然后确保 Jenkins 仅在 Jenkins.xml 配置中侦听 localhost 上的连接。Jenkins.xml 应该将监听地址设置为 127.0.0.1。然后对该 FQDN 的外部请求将无法绕过代理,因为 Jenkins 将只允许来自本地主机的连接(来自 NGINX,或者您在本地主机上使用浏览器)。
然后,理想情况下,你有: http://fqdn- >NGINX 监听端口 80 -> Jenkins 在 127.0.0.1:8080。使用浏览器的用户(安全地在您的服务器之外)永远不会看到 8080 端口。
推荐阅读
- javascript - json数据深度嵌套的datatable和ajax
- sas - SAS 自定义键 (F12) 清除但随后在没有命令的情况下运行脚本
- mysql - 将 Mediawiki 部署到 Azure:无 SSL 连接
- javascript - 如何在 React.JS 中正确交换数组元素?
- c++ - C++ 禁用子类中的重载运算符
- javascript - 带有 indexArray 的顶点不能正确连接三角形
- android - 升级到 Jetpack Compose Alpha 12 会导致 setContent 出现错误
- r - 如何解决数值积分中的“非数值参数..”错误?
- python - 在 Discord Bot 脚本中创建定时循环以重新加载网页(网络爬虫机器人)
- python - kivymd 扩展面板 - 如何创建具有不同内容的面板