在 Nginx 中通过主机名动态查找容器的地址
Looking up a container's address via its hostname dynamically in Nginx
我目前正在尝试 运行 一台主机上的两个容器,一个是应用程序(Ruby on Rails),另一个是 Nginx 作为反向代理和缓存.该应用程序在 TCP 端口 80 上 运行ning。我想要做的是关闭我的应用程序容器,将其删除,然后再次启动它,而无需重新启动 nginx。问题是 Nginx 似乎只查找容器的 IP 一次,所以如果它出现故障然后在不同的地址备份,那么 Nginx 只会抱怨那里什么都没有。
我已经尝试了一些方法:
- 使用
resolver 127.0.0.11 valid=5
来使用 Docker 的 DNS
- 使用
upstream
块
- 使用变量尝试让 nginx 在 运行 时解析。
我不确定还有什么地方可以查看,但是如果应用程序在不同的 IP 地址上启动,这些选项中的 none 会起作用。有什么我遗漏的东西使这不可能吗?
谢谢。
最终阅读了 the 12 factor app,这启发我完全删除了对 Rails 上游的 Nginx 代理,而是将其用作具有外部 DNS 名称上游的代理缓存。
我目前正在尝试 运行 一台主机上的两个容器,一个是应用程序(Ruby on Rails),另一个是 Nginx 作为反向代理和缓存.该应用程序在 TCP 端口 80 上 运行ning。我想要做的是关闭我的应用程序容器,将其删除,然后再次启动它,而无需重新启动 nginx。问题是 Nginx 似乎只查找容器的 IP 一次,所以如果它出现故障然后在不同的地址备份,那么 Nginx 只会抱怨那里什么都没有。
我已经尝试了一些方法:
- 使用
resolver 127.0.0.11 valid=5
来使用 Docker 的 DNS - 使用
upstream
块 - 使用变量尝试让 nginx 在 运行 时解析。
我不确定还有什么地方可以查看,但是如果应用程序在不同的 IP 地址上启动,这些选项中的 none 会起作用。有什么我遗漏的东西使这不可能吗?
谢谢。
最终阅读了 the 12 factor app,这启发我完全删除了对 Rails 上游的 Nginx 代理,而是将其用作具有外部 DNS 名称上游的代理缓存。