Nginx设置Https反向代理,指向Docker Gitlab11.3.9 Https服务
目录
1、GitLab11.3.9的安装
首先确保机器已经安装好Docker,执行以下命令安装GitLab11.3.9:
# Pull image
> git clone https://github.com/idoall/docker.git
> cd gitlab-ce/11.3.9-ce.0
# 启动 Gitlab 容器
> docker stack deploy -c docker-compose.3.6.yml mshk_gitlab
Gitlab 容器是以 stack 方法运行的,可以自行修改配置文件
root帐号的密码默认是MySuperSecretAndSecurePass0rd!Gitlab 内部的一些配置,可以直接修改 gitlab.rb
运行docker service ls命令,可以看到 GitLab 的服务已经在运行:
> docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
qnh3srwc3qjo mshk_gitlab_mshk_gitlab replicated 1/1 idoall/gitlab-ce:11.3.9-ce.0 *:20050->80/tcp, *:20051->443/tcp, *:20052->22/tcp
2、域名在阿里云托管,申请免费的1年证书
在阿里云申请后,会有两个文件gitlab-ce.mshk.top.pem和gitlab-ce.mshk.top.crt,下载到本地。
3、Gitlab 的 https 配置
这里可以在运行 Gitlab 容器前,根据 帮助 将本地的目录挂载到容器中,持久化运行。后面容器重启也不会丢数据。
将下载的gitlab-ce.mshk.top.pem和gitlab-ce.mshk.topcrt证书文件,放到容器的/etc/gitlab/ssl/目录下面。
下面是我的docker.gitlab.ce.yml文件配置:
version: "3.6"
# https://docs.docker.com/compose/compose-file/
# support Docker version 17.05.0-ce
services:
#################################### gitlab_ce ######################################################
gitlab_ce:
image: idoall/gitlab-ce:11.3.9-ce.0
hostname: gitlab_ce
ports:
- "20042:22"
- "20040:80"
- "20041:443"
dns:
- 114.114.114.114
- 9.9.9.9
volumes:
- /home/work/_app/_gitlab_ce/gitlab_data:/var/opt/gitlab
- /home/work/_app/_gitlab_ce/gitlab_logs:/var/log/gitlab
- /home/work/_app/_gitlab_ce/gitlab_config:/etc/gitlab
networks:
- mshk-top
environment:
GITLAB_OMNIBUS_CONFIG: "from_file('/omnibus_config.rb')"
configs:
- source: gitlab
target: /omnibus_config.rb
deploy:
replicas: 1
update_config:
delay: 1s
restart_policy:
condition: on-failure
configs:
gitlab:
file: ./docker.gitlab.ce.rb
# 统一网络设置
networks:
mshk-top:
driver: overlay
下面是我的docker.gitlab.ce.rb文件配置:
external_url 'https://gitlab-ce.mshk.top'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab-ce.mshk.top.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab-ce.mshk.top.key"
gitlab_rails['gitlab_shell_ssh_port'] = 20042
# 使用QQ企业邮件发邮件
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "noreply@mshk.top"
gitlab_rails['smtp_password'] = "*******"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'noreply@mshk.top'
gitlab_rails['smtp_domain'] = "exmail.qq.com"
# 与Crowd结合,统一登录认证
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = true
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [
{
"name" => "crowd",
"args" => {
"crowd_server_url" => "http://crowd.mshk.top/crowd",
"application_name" => "gitlab",
"application_password" => "******"
}
}
]
调整好配置后,执行下面的命令,重启 Gitlab:
# 获取容器名称,赋值到一个变量中
CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_gitlab_mshk_gitlab.1`
# 停止服务
docker exec $CONTAINERNAME sh -c 'gitlab-ctl stop'
# 更新权限
docker exec $CONTAINERNAME update-permissions
# 重新设置gitlab配置
docker exec $CONTAINERNAME sh -c 'gitlab-ctl reconfigure'
# 启动服务
docker exec $CONTAINERNAME sh -c 'gitlab-ctl start'
4、Nginx 配置 https,反向代理指向 Gitlab 配置
这里有一点注意,配置证书的时候,Https服务设置的反向代理端口,是我们刚才设置的20041.
完整的Nginx的配置文件gitlab-ce.mshk.top.conf的格式如下:
## 将HTTP请求全部重定向至HTTPS
server {
listen 80;
server_name gitlab-ce.mshk.top;
charset utf-8;
access_log logs/gitlab.access.log;
error_log logs/gitlab.error.log;
rewrite ^ https://gitlab-ce.mshk.top;
}
## 请求转发到GitLab容器
server {
listen 443 ssl;
server_name gitlab-ce.mshk.top;
charset utf-8;
access_log logs/gitlab.access.log;
error_log logs/gitlab.error.log;
ssl on;
# 服务的证书
ssl_certificate /usr/local/nginx/cert/gitlab-ce.mshk.top.pem;
# 服务端key
ssl_certificate_key /usr/local/nginx/cert/gitlab-ce.mshk.top.key;
# session超时时间
ssl_session_timeout 5m;
# 加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 允许SSL协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 启动加密算法
ssl_prefer_server_ciphers on;
location / {
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-Proto https;
proxy_pass https://localhost:20041;
}
location ~ .*\.(js|css|png)$ {
proxy_pass https://localhost:20041;
}
}
最后重新载入Nginx配置,就可以生效了:
> nginx -s reload
下面是最终生效的截图:

博文作者:迦壹
博客地址:Nginx设置Https反向代理,指向Docker Gitlab11.3.9
转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
假设您认为这篇文章对您有帮助,可以通过以下方式进行捐赠,谢谢!

比特币地址:1KdgydfKMcFVpicj5w4vyn3T88dwjBst6Y
以太坊地址:0xbB0a92d634D7b9Ac69079ed0e521CC2e0a97c420
Nginx设置Https反向代理,指向Docker Gitlab11.3.9 Https服务的更多相关文章
- nginx设置SSL反向代理
Nginx的反向代理通常用来映射内网中提供的Apache.IIS.Lighttpd服务,以实现负载均衡:同时,由于动态服务程序运行在内网,服务器的整体安全性也有所提高,那么怎样用nginx设置SSL的 ...
- windows:nginx配置http、https反向代理
一.下载 Windows 版本的 nginx nnginx下载:http://nginx.org/en/download.html 推荐稳定版本.下载完成后,解压得到 nginx-1.14.0 ,我把 ...
- Nginx介绍与反向代理
Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...
- 五、Nginx多Server反向代理配置
Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了. server_name的匹配顺序 Nginx中的s ...
- Nginx 部署、反向代理配置、负载均衡
Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...
- Nginx 七层反向代理
目录 1.代理 2.正向代理 3.反向代理 4.Nginx 反向代理 5.Nginx 反向代理相关指令介绍 ①.listen ②.server_name ③.location ④.proxy_pass ...
- 【转】Nginx服务器的反向代理proxy_pass配置方法讲解
[转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...
- Nginx 之六: Nginx服务器的反向代理功能
一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...
- nginx启用TCP反向代理日志配置
Nginx使用TCP反向代理日志配置不同于http 修改nginx配置文档/usr/local/nginx/conf/nginx.conf 设置日志格式 stream { log_format pro ...
随机推荐
- Gradle中的闭包
Gradle是基于Groovy的DSL基础上的构建工具,Gradle中的闭包,其原型上实际上即Groovy中闭包.而在表现形式上,其实,Gradle更多的是以约定和基于约定基础上的配置去展现.但本质上 ...
- 45个值得收藏的 CSS 形状
摘要: CSS炫技. 原文:45个值得收藏的 CSS 形状 作者:前端小智 Fundebug经授权转载,版权归原作者所有. CSS能够生成各种形状.正方形和矩形很容易,因为它们是 web 的自然形状. ...
- 衡量GDP,哪种夜间灯光数据更靠谱?
<新科学家>杂志报道,随着经济发展,一些国家通常会新修道路,扩展居民区,这两项措施都会使从太空中看到的灯光强度增加.不少学者利用夜间灯光数据与国内生产总值统计数据进行比较,发现从太空中看到 ...
- git使用笔记1:结合Github远程仓库管理项目
git是一个十分好用的版本控制工具,我们经常在本地使用git进行项目开发,Git 并不像 SVN 那样有个中心服务器,如果想要通过 Git 分享你的代码或者与其他开发人员合作,就需要将数据放到一台其他 ...
- 【BZOJ5505】[GXOI/GZOI2019]逼死强迫症(矩阵快速幂)
[BZOJ5505][GXOI/GZOI2019]逼死强迫症(矩阵快速幂) 题面 BZOJ 洛谷 题解 如果没有那两个\(1*1\)的东西,答案就是斐波那契数,可以简单的用\(dp\)得到. 大概是设 ...
- 详解docker实战之搭建私有镜像仓库 - kurbernetes
1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...
- Java数据结构和算法 - 简单排序
Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...
- Hadoop系列005-Hadoop运行模式(下)
本人微信公众号,欢迎扫码关注! Hadoop运行模式(下) 2.3.完全分布式部署Hadoop 1)分析: 1)准备3台客户机(关闭防火墙.静态ip.主机名称) 2)安装jdk 3)配置环境变量 4) ...
- hibernate出现QueryException: could not resolve property 查询异常
可能是你的属性名写错了, 因为hibernate是面向对象和属性的.
- 部署tomcat环境
1.安装java jdk Java环境变量配置 2.下载64位tomcat https://tomcat.apache.org/download-70.cgi 3.配置service 打开cmd,执行 ...