Harbor私服无法在外网访问?

我们在局域网内搭建了一个Harbor私服,局域网IP地址为: 192.168.3.9,这台机器本身具有公网IP,也有公网域名。

harbor.yml配置文件中,hostname配置为:

#hostname: xxxx(公网ip)
hostname: 192.168.3.9

现在发现一个问题,如果把hostname配置为内网地址,那么在局域网内可以访问。但在公网是无法访问的,即通过本机的外网ip无法访问。

如果将 Hostname改成 公网ip,那么存在另一个问题,就是在公网可以访问,但在局域网无法访问。

网上查了一些文章,有说要改 external_url的,好像又配置了一个nginx?(harbor已经自带了2个nginx了,还要再配置第3个nginx吗?)还有的好像要改 下面的 proxy段。

proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

现在比较混乱了。 需要怎样改呢?谢谢!
补充说明一下, 目前使用http就可以了。 暂时不涉及证书问题。

两个参考网页:
https://www.cnblogs.com/breeze-24/p/16250853.html
https://www.cnblogs.com/zhangmingcheng/p/14167615.html

2023-12-06补充:
这个问题我重新做了下跟踪和总结,参考:https://segmentfault.com/a/1190000044449171

阅读 1.6k
1 个回答

我看了一下我自己本地的harbor v2.8.4,发现似乎和 hostname / external_url 都没有关系。

这个hostname字段,看上去只和web上显示提示的推送命令提示有关系。
不管hostname改成什么,都不会影响到nginx,nginx默认配置里面server_name是注释掉的。

所以,这里不管通过什么IP/Hostname访问,只要访问的端口正确,即通过80/443/或者设置的其他端口,都能访问到harbor的服务。

理想情况下,我觉得可以把hostname改成域名比较合适,在内网访问时DNS服务器返回内网IP,在外网访问时DNS服务器返回外网IP。

image.png

image.png

image.png

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏