我们在局域网内搭建了一个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
我看了一下我自己本地的harbor v2.8.4,发现似乎和 hostname / external_url 都没有关系。
这个hostname字段,看上去只和web上显示提示的推送命令提示有关系。
不管hostname改成什么,都不会影响到nginx,nginx默认配置里面server_name是注释掉的。
所以,这里不管通过什么IP/Hostname访问,只要访问的端口正确,即通过80/443/或者设置的其他端口,都能访问到harbor的服务。
理想情况下,我觉得可以把hostname改成域名比较合适,在内网访问时DNS服务器返回内网IP,在外网访问时DNS服务器返回外网IP。