Harbor配合Nginx配置公网域名
<p>需求:</p><p> 公司内部将制作的docker镜像推送到公司私有Harbor仓库,客户可以通过公网域名直接拉取公司Harbor公开项目下的镜像,通过分配的Harbor用户名密码可以拉取对应的私有项目下的镜像。 </p>
<p>安装Harbor:</p>
<p> 参考这篇博文:https://www.cnblogs.com/zhangmingcheng/p/12753959.html</p>
<p id="articleContentId" class="title-article">Harbor配置nginx代理:</p>
<p> Harbor默认只能使用<code>harbor.yml</code>中hostname指定的ip或主机名作为web访问地址,但在实际使用过程中,一般不允许ip地址或者主机名直接暴露在外访问,故需要配置nginx代理,通过代理后指定的地址进行访问。</p>
<ul>
<li>通过nginx为harbor后端暴露的地址及端口设置proxy地址,来源于harbor配置文件中的hostname及port</li>
<li>修改harbor配置文件再次使用nginx设置的proxy地址</li>
</ul>
<p> 通过修改nginx的配置文件中server模块设置代理地址以及端口等信息,若harbor与nginx不在同一个服务器上或harbor不止一个服务器,还需要通过nginx的upstream模块来实现请求后端realserver及负载均衡,nginx配置文件修改处示例如下: <img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221140758334-1610600368.png"></p>
<p>Harbor设置:</p>
<p> 通过nginx配置了代理之后,还需要修改harbor的配置文件设置proxy地址:</p>
<p> vim harbor.yml</p>
<p><img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221141255204-1221032204.png"></p>
<p> web验证:</p>
<p>通过浏览器访问<code>http://xx.xx.com:port</code>访问代理后地址</p>
<p><img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221141414123-625409612.png"></p>
<p>客户阿里云服务器测试:</p>
<p>1、直接拉取public项目下的镜像:</p>
<p><img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221143212661-367970572.png"></p>
<p> 2、拉取私有项目下的镜像</p>
<p><img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221143520571-1642840629.png"></p>
<p>遇到的问题:</p>
<p>1、request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)错误:</p>
<p># docker pull harbor.xxx.cn:443/1-1/mytomcat:8.5.52<br>Error response from daemon: Head https://harbor.xxx.cn:443/v2/1-1/mytomcat/manifests/8.5.52: Get http://10.20.31.104:5000/service/token?scope=repository%3A1-1%2Fmytomcat%3Apull&service=harbor-registry: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)</p>
<p>解决方案:修改harbor.yml配置文件,取消external_url注释,设置为:external_url: https://harbor.xxx.cn,注意https://harbor.xxx.cn后面不能写端口。</p>
<p>然后,docker-compose down停止所有服务,删除当前配置目录:<span style="color: rgba(255, 0, 0, 1)"><strong>rm -rf ./common/config</strong></span>下配置清单,重新执行install.sh生成配置,即可解决</p>
<p>2、dial tcp: lookup harbor.xxx.cn;: no such host错误:</p>
<p><img src="https://img2020.cnblogs.com/blog/624219/202012/624219-20201221141827985-1266560705.png"></p>
<p>解决方案:修改harbor.yml配置文件,hostname字段只写harbor.xxx.cn,域名前面不要写http/https协议。</p>
<p>3、Harbor重启失败,报ERROR: <span class="token keyword">for harbor-portal Cannot start <span class="token function">service portal: failed to initialize logging driver: dial tcp 127.0.0.1:1514: connect: connection refused错误</span></span></p>
<p>解决方案:https://blog.csdn.net/qq_39680564/article/details/107237110</p>
<p>注意:只要修改了harbor.yml,要想让配置生效,需要删除当前配置目录:<strong>rm -rf ./common/config</strong>下配置清单,重新执行install.sh生成配置。</p>
<p> </p>
<p>参考:https://blog.csdn.net/lcl_xiaowugui/article/details/105422794</p>
<p>参考:https://blog.csdn.net/fengchao169/article/details/106223253/</p>
<p>参考:https://www.cnblogs.com/liucx/p/12981023.html</p>
<p>参考:https://blog.csdn.net/qq_39680564/article/details/107237110</p>
<p>参考:http://www.ttlsa.com/nginx/resolve-https-rewrite-to-http/</p><br><br>
来源:https://www.cnblogs.com/zhangmingcheng/p/14167615.html
頁:
[1]