配置harbor的nginx反向代理

准备:
=>申请ssl免费域名并下载密钥
=>申请域名
=>安装nginx
=>安装docker-compose
=>安装harbor
1、配置http域名访问
1)修改nginx配置
为了保证能通过域名访问harbor,避免因域名问题而导致不能正常访问,这里我先实现了通过域名能正常访问。
vim /data/docker/nginx/conf/conf.d/default.conf
配置harbor的nginx反向代理_第1张图片
upstream harbor{
    server 192.168.17.102:85;
}
server
{
    listen 80;
    server_name harbor.test.com;
    client_max_body_size 0;  # 放开上传文件大小限制
    index index.php index.html index.htm default.php default.htm default.html;
    location /harbor
    {
        proxy_pass http://harbor;
    }
}
2)、修改harbor.yml配置
配置harbor的nginx反向代理_第2张图片
3)、访问: http://harbor.test.com/harbor/ 
出现404或者无反应,需加端口号
注意:这里需要加端口号才能正常访问
http://harbor.test.com:85/harbor/
配置harbor的nginx反向代理_第3张图片
2、修改nginx配置,实现用https访问
配置harbor的nginx反向代理_第4张图片
出现问题: http可以访问,但https不能访问
修改harbor.yml配置,打开https,并将external_url 改成https
配置harbor的nginx反向代理_第5张图片
重新启动harbor
./prepare
./install.sh
修改nginx配置
配置harbor的nginx反向代理_第6张图片
upstream harbor{
    server 192.168.17.102 :887;
}
server
{
    listen 80;
    server_name harbor.test.pub;
    client_max_body_size 0;  # 放开上传文件大小限制
    index index.php index.html index.htm default.php default.htm default.html;
    rewrite ^(.*)$ https://$host$1;
}
server {
    listen      443 ssl;
    server_name harbor.test.pub;
    index index.php index.html index.htm default.php default.htm default.html;
    ssl_certificate      /ssl/6708595_harbor.test.com.pem;
    ssl_certificate_key  /ssl/6708595_harbortest.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location /harbor {
        proxy_pass http://harbor;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect http:// $scheme://;
        client_max_body_size 0;
    }
访问: https://harbor.test.com:887/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects
配置harbor的nginx反向代理_第7张图片
配置vim /etc/docker/daemon.json
配置harbor的nginx反向代理_第8张图片
上传镜像:
登录docker login -u test -p ***  https://harbor.test.com:887/
出现
Error response from daemon: Get " http://harbor.test.com:887 /v2/": dial tcp 192.168.17.102:887: connect: connection refused错误
尝试再web页面通过用户名密码登录,发现也登录不了
配置harbor的nginx反向代理_第9张图片
查看token认证的文件
将此文件复制到/etc/docker/certs.d/ harbor.od.com/ 认证的目录下面
cp common/config/registry/root.crt /etc/docker/certs.d/ harbor.od.com/
尝试登录
配置harbor的nginx反向代理_第10张图片
问题解决
尝试服务器登录
sudo docker login -u admin -p ***   https://harbor.test.com:887/
尝试本地登录
docker login https://harbor.test.com:887/ 出现以下提示
解决办法
进入harbor目录找到/common/config/registry目录,找到config.yml文件,找到auth: realm:的URL地址有没有错。错了,修改一下然后重启
auth:
token:
issuer: harbor -token- issuer
realm: http: //reg.harbor.cn/service/token  #注意这里 http: //reg.harbor.cn:887/service/token  看看有没有加端口号
rootcertbundle: /etc/registry/ root.crt
service: harbor - registry
validation:
然后重启harbor
docker- compose down
docker-compose up -d
配置harbor的nginx反向代理_第11张图片
登录成功

你可能感兴趣的:(运维的那些坑,nginx,运维,linux,容器,jenkins)