我在我的NAS上的docker容器中安装了一个nextcloud服务,该服务可以通过我为其生成通配符Letsencrypt证书的FQDN从互联网访问。反向代理(Traefik(正在向服务发送请求,并处理http/https。
在局域网之外,一切都很好,但从本地网络连接到nextcloud会出现证书错误。例如,尝试从Firefox打开下一个云主页会得到:
nextcloud.yourdomain.com uses an invalid security certificate.
The certificate is not trusted because it is self-signed.
Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
View Certificate
点击";查看证书";实际上显示了路由器自己的证书。
作为附加信息,我的nextcloud服务FQDN被正确解析为我的路由器的公共IP地址,即使是在LAN内,即
ping nextcloud.yourdomain.com
正确地返回我的路由器的公共IP地址。
我该如何避免这种情况?为什么路由器使用自己的证书向局域网内的主机发送https流量,而不是我域的Letsencrypt证书,就像从局域网外发送一样?
显然,反向代理或NAS不应受到指责,因为https请求甚至没有到达它们。
你能帮我做一些额外的故障排除吗?谢谢PI
您使用的外部IP地址实际上是路由器的IP地址。对于来自外部(即互联网(的流量,有一个端口转发规则将此流量转发到内部服务器。对于内部的流量,将不应用此端口转发-这是特定路由器的工作方式。由于实际上有一个服务在同一个端口(路由器的管理接口(上运行,并且可以从内部访问,因此将使用它。
请注意,这就是这个特定路由器的工作方式。不同的路由器可能会将端口转发应用于内部和外部流量。不过,在这种情况下,它也需要支持NAT环回。
一种解决方法是使用拆分DNS,即通过公共IP地址从外部访问nextcloud,通过内部IP地址从内部访问nextloud。这样的设置是否可以用你已经拥有的系统来完成是未知的。