在 HTTPS 的反向代理 Nginx 后运行 HTTP Harbor
以下基于 Harbor v2.5.0。
最终看起来像这样 nginx (host,ssl) -> harbor-nginx (non-ssl) -> harbor。
说明
首先服务上安装有 nginx,且配置了 SSL,现在可能在本机或者内网的其他机器上安装有 Harbor,需要反向代理到本机映射出去。
harbor.yml
首先需要注释掉 https 相关的配置,并添加 external_url 的配置项。
1 | # Configuration file of Harbor |
harbor.conf
在 nginx 的 vhost 中新增相关配置,必须要配置 X-Forwarded-Proto $scheme,client_max_body_size 按需配置。
1 | server { |
常见问题
docker login 出现 unauthorized: authentication required
harbor 内没有配置 external_url。
访问 hub.example.cn 会重定向到某个端口
harbor 内需要取消 https 的配置。
docker push 出现 400 The plain HTTP request was sent to HTTPS port
反向代理 nginx 中没有配置 X-Forwarded-Proto $scheme。