nginx中动态更新转发IP

nginx中动态更新转发IP

正如通常的免责声明 - 我已经寻找解决方案很长时间了,但还没有找到任何可行的解决方案。

目标:创建动态 DNS 解决方案,无需第三方服务即可访问我的家庭网络。

设置:运行 nginx 并具有可用域名的互联网服务器、带有路由器的本地网络,由 ISP 每天自动分配一个新 IP。

迄今已取得的成果:我设法使用 nginx 作为反向代理,使用与以下https://dyn.mydomain.tld内容对应的指令https://my.current.ip.address将请求转发到server

server {
    443 ssl http2;
    ssl on;
    ssl_certificate  /etc/letsencrypt/live/dyn.mydomain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dyn.mydomain.tld/privkey.pem;
    location / {
        proxy_pass https://my.current.ip.address;
    }
}

这成功且透明地将请求重定向到本地路由器的 Web 界面。

问题:但是,我当然需要它来处理我的动态 IP 地址。我可以告诉我的路由器调用任意 URL,并在其更改时传递新的 IP 地址,因此我似乎需要的是我的服务器上的一个 URL,它将更新 nginx 将请求重定向到的 IP。我正在寻找一种解决方案,它可以在尽可能低的性能和(更重要的是)安全隐患的情况下做到这一点。

想法: 我首先想到的是将该 IP 放在 nginx 读取的文件中,但是我读过这会导致相当糟糕的性能(如果有可能从 nginx 配置中的文件读取变量的话)。

另一个想法是让脚本在某处更新 IP 地址,然后重新加载 nginx 以“静态”加载该值。但是,这意味着我必须授予可公开访问的脚本/URL 根权限,至少要重新启动 nginx 并可能重写文件 - 这似乎是我不想做的事情?

问题(简洁):有没有办法为 nginx 提供一个动态 IP 转发值,该值可以通过在路由器发起的 HTTPS 请求时执行脚本来更新?

在旁边:被列为“迄今为止已实现”的实现将服务器上安装的 Lets Encrypt 证书提供给浏览器,而浏览器的(自签名)证书不再使用(当直接通过其当前 IP 或通过第三方动态 DNS 服务访问路由器的配置页面时,浏览器会抱怨自签名证书)。虽然这看起来像是一种便利的进步,但这难道不是一个安全问题吗?因为路由器的身份可能没有得到正确检查?

相关内容