我在 VM 中的端口 80 上使用 Nginx docker 映像(地址x.y.z.w
)。因此,当我在浏览器中尝试http://x.y.z.w
时,它显示了 Nginx 索引文件。
现在我正在配置(基本上是传递)它为我的两个 docker 映像在端口 8081 和 8082 上的同一 VM 上运行。
when I type http://x.y.z.w/a it should go to http://x.y.z.w:8081
when I type http://x.y.z.w/b it should go to http://x.y.z.w:8082
为此,我更改了 conf 文件中的一部分:
location /a {
rewrite ^/a(.*) /$1 break;
proxy_pass http://x.y.z.w:8081 ;
}
location /b {
rewrite ^/b(.*) /$1 break;
proxy_pass http://x.y.z.w:8082 ;
}
它按预期工作。但由于所有的图像都在同一台机器 (具有相同的 IP),我想使用localhost
而不是x.y.z.w
。但它不与localhost
一起工作。
基本上,我不想在链接中使用硬编码的 IP(x.y.z.w),因为 IP 将来可能会更改。
有什么办法,Nginx 可以知道它正在运行的变量 IP,我可能会使用该 IP。或者它如何与localhost
一起工作?
您不能使用localhost
来寻址另一个 docker 容器,因为它指的是容器的loopback
而不是主机的。正如 @ Tuan 建议的那样,您可以link
(https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/)容器,因此它们可以通过其名称进行通信。例如:
docker run --rm -ti --name backend nginx:latest
docker run --rm -ti --name proxy --link backend:backend nginx:latest
Nowproxy
knows aboutbackend
.
我只是用$host
替换了我的nginx.conf
中出现的x.y.z.w
,它工作正常。
例如,而不是proxy_pass http://x.y.z.w:8081 ;
,
proxy_pass http://$host:8081;
现在,如果我的 IP(x.y.z.w
)更改,它不会影响我的应用程序。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(40条)