Nginx没有configure:为路由配置 Nginx(nginx router)

关于Nginx没有configure的问题,在nginx router中经常遇到, 我在 VM 中的端口 80 上使用 Nginx docker 映像(地址x.y.z.w)。因此,当我在浏览器中尝试http://x.y.z.w时,它显示了 Nginx 索引文件。

我在 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一起工作?

0

您不能使用localhost来寻址另一个 docker 容器,因为它指的是容器的loopback而不是主机的。正如 @ Tuan 建议的那样,您可以linkhttps://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
Nowproxyknows aboutbackend.
0

我只是用$host替换了我的nginx.conf中出现的x.y.z.w,它工作正常。

例如,而不是proxy_pass http://x.y.z.w:8081 ;

wrote itproxy_pass http://$host:8081;

现在,如果我的 IP(x.y.z.w)更改,它不会影响我的应用程序。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(506)
备用电源自投装置调试:如何使用电源自动触发 Excel自动填充
上一篇
Linux温度监控:我正在创建这个温度监控系统
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(40条)