同時發佈於schnappi618’s blog
從前面的文章harbor搭建docker私有鏡像倉庫可以看出harbor默認只能使用harbor.yml
中hostname指定的ip或主機名作爲web訪問地址,但在實際使用過程中,一般不允許ip地址或者主機名直接暴露在外訪問,故需要配置nginx代理,通過代理後指定的地址進行訪問。
一、設置原理
- 通過nginx爲harbor後端暴露的地址及端口設置proxy地址,來源於harbor配置文件中的hostname及port
- 修改harbor配置文件再次使用nginx設置的proxy地址
二、Nginx代理
通過修改nginx的配置文件中server模塊設置代理地址以及端口等信息,若harbor與nginx不在同一個服務器上或harbor不止一個服務器,還需要通過nginx的upstream模塊來實現請求後端realserver及負載均衡,nginx配置文件修改處示例如下:
## 設置upstream
upstream harbor{
server x.x.x.x:xx; # 後端harbor地址
}
## 設置代理後地址及監聽端口等
server {
listen 80; # 代理後端口
server_name xx.xx.com; # 代理後訪問地址
location /harbor {
proxy_pass http://harbor; # 這裏對應的是上面upstream後指定的名稱
}
}
三、Harbor設置
通過nginx配置了代理之後,還需要修改harbor的配置文件設置proxy地址:
[root@xxxx harbor]# vim harbor.yml
# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
## 打開該項配置,這裏對應着nginx所設置的代理後訪問地址
external_url: http://xx.xx.com
四、Web驗證
通過瀏覽器訪問http://xx.xx.com:port
訪問代理後地址,這裏因爲nginx代理後使用了80端口,所以不需要寫明端口。
至此,harbor配置nginx代理設置成功!