Nginx 有什么方法可以解析 CNAME(或在其他地方查找 URL)然后重定向到结果吗?

Nginx 有什么方法可以解析 CNAME(或在其他地方查找 URL)然后重定向到结果吗?

我有一个 AWS API 网关端点,其 URL 如下:

https://xxxxxxxxxx-vpce-09572222209cd2305.execute-api.us-west-1.amazonaws.com

我想为该名称创建一个容易记住的别名,以便在浏览器中使用。我已经有一个 Nginx 网关,它可以重定向到许多其他服务器。所以我只需在该机器的配置中添加几行:这是我现在正在做的事情:

location /myapi {
    return 301 https://xxxxxxxxxx-vpce-09572222209cd2305.execute-api.us-west-1.amazonaws.com;
}

这很好用。我可以https://mydomain/myapi用浏览器访问,然后重定向到真正的 AWS 端点 URL。

但当我重新部署时,URL 发生了变化。使用此设置,我必须登录到我的 Nginx 服务器并更新配置文件中的上述条目以重定向到新端点。

我想知道是否有任何方法可以让 Nginx 从某个动态位置获取该 URL,以便我的部署代码可以更新该 URL,这样我就不必在端点 URL 更改时手动编辑配置文件。我首先想到的是使用 DNS。是否有任何方法可以让 Nginx 执行 CNAME 查找,然后重定向到结果?您能想到另一种方法让我可以从 Nginx 获得这种动态行为吗?

由于 SSL,我无法对端点进行代理。我的浏览器最终必须访问 AWS URL,以便请求中的地址与 Amazon 的证书匹配。我认为重定向是唯一的方法。

我相信在 API 网关中可以做到这一点,但这很复杂。我想找到一些更容易做到的事情……一些我几乎可以即时完成而不需要太多思考的事情。我想反复使用同样的技术。

答案1

首先,很抱歉没有正确回答您的问题。在部署期间,有没有办法运行 bash 脚本或类似的东西?我在想,您可以在 aws 端运行一个 check-hostname 函数,以便使用 cen,组合一个正确的 URL 并在 nginx-config 中更改它。运行 nginx -s reload 以热交换配置,一切都应该是最新的。(运行 nginx -t 来检查配置是否合理可能会很好,但如果我没有弄错,如果配置有明显错误,nxinx -s reload 会停止。)

相关内容