Nginx反向代理Harbor更优雅的使用私有仓库

大部分人拿来当作docker私有仓库的机器可能不止运行Harbor一个程序,因此很有可能80和443端口会被自己安装的Http程序所占用。而如果修改了Harbor的端口的话长长的镜像名字还得带上端口,看起来有点难受。

所以在此情况可以安装Nginx作为端口转发的工具,由他来控制80和443端口的访问。

设置Harbor

因为接下来设置nginx之后可以通过域名来区分入口,不需要依靠端口。就需要把Harbor的hostname修改。

修改harbor.cfg

1
2
# 不需要加入端口
hostname = docker.domain.com

修改docker-compose.yml

1
2
3
#修改proxy节点的port
- 8848:80
- 9443:443

接下来重新运行./install.shHarbor不会删除任何数据

完成之后访问docker.domain.com:9443测试能否打开,如果一切正常进行接下来的操作

配置Nginx反向代理

创建新的配置文件,以下是不完全配置,根据自己需要修改内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server
{
listen 80;
listen 443 ssl http2;
server_name docker.domain.com;
index index.php index.html index.htm default.php default.htm default.html;
root /webdir;
#ssl证书位置
ssl_certificate /etc/letsencrypt/live/docker.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/docker.domain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;

location /
{
#目标地址,建议使用localhost
proxy_pass https://localhost:9443;
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 REMOTE-HOST $remote_addr;

add_header X-Cache $upstream_cache_status;

expires 12h;
}

}

重载nginx之后就可以通过docker.domain.com直接访问Harbor,也能使用docker直接login。

在Nginx的目标地址如果使用Localhost的话可以在防火墙中关闭9443的对外连接,可以减小安全风险

文章作者: Image
文章链接: https://by.cx/2018/10/26/Nginx反向代理Harbor更优雅的使用私有仓库/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编译程序