JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

nginx docker 容器如何访问宿主机的 golang 程序

wys521 2024-10-19 09:25:02 精选教程 22 ℃ 0 评论

如题,我们在部署 Golang 代码时,没有通过打包 Go 代码到容器镜像,而是直接部署编译后的代码到服务端。但我们的服务器环境是跑在容器上的,也就是 Nginx 是在容器里。如果不考虑容器,那部署 Nginx 的配置应该如下方所示:

server {
    server_name your_domain;

    location / {
        proxy_pass http://127.0.0.1:9990;
    }
}

当我们按上方的配置部署时,就无法访问了,就算 GO 自己启动了通过 localhost:9990 能访问,但通过 Nginx your_domain 就不行,折腾了一会儿,后来想明白了。

上面代码里的 proxy_pass 对应的 127.0.0.1,实际上是 Nginx 所在容器的 127.0.0.1,而 GO 没有在容器里,创建服务后,是跑在宿主机上的,因此,没法跑通。

有了大思路,通过以下方式能跑通:

server {
    server_name your_domain;

    location / {
        proxy_pass http://192.168.31.61:9990;
    }
}

上方代码里的 192.168.31.61 宿主机的 ip,因此可以直接访问到。

以上是我遇到问题的解决方案,希望对其他朋友也有帮助。

不过,我觉得这个方式,不够优雅,想通过 docker 的 ports 方式来优化, 但没成功,如果有哪位朋友知道更好的方案请给我留言,尽量详细一点描述哈,感谢感谢。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表