Nginx反向代理Harbor更优雅的使用私有仓库
大部分人拿来当作docker私有仓库的机器可能不止运行Harbor一个程序,因此很有可能80和443端口会被自己安装的Http程序所占用。而如果修改了Harbor的端口的话长长的镜像名字还得带上端口,看起来有点难受。
所以在此情况可以安装Nginx作为端口转发的工具,由他来控制80和443端口的访问。
设置Harbor
因为接下来设置nginx之后可以通过域名来区分入口,不需要依靠端口。就需要把Harbor的hostname修改。
修改harbor.cfg
# 不需要加入端口
hostname = docker.domain.com
修改docker-compose.yml
#修改proxy节点的port
- 8848:80
- 9443:443
接下来重新运行./install.sh
Harbor不会删除任何数据
完成之后访问docker.domain.com:9443测试能否打开,如果一切正常进行接下来的操作
配置Nginx反向代理
创建新的配置文件,以下是不完全配置,根据自己需要修改内容
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的对外连接,可以减小安全风险