系统相关
首页 > 系统相关> > nginx – 具有相同域的端口80上的多个Docker容器

nginx – 具有相同域的端口80上的多个Docker容器

作者:互联网

我的问题类似于this问题,但只有一个域.

是否可以在同一台服务器上运行多个docker容器,所有这些容器都在端口80上,但具有不同的URL路径?

例如:

在内部,所有应用程序都托管在同一个docker服务器上.

172.17.0.1:8080 => app1
172.17.0.2:8080 => app2
172.17.0.3:8080 => app3

在外部,用户将使用以下URL访问应用程序:

www.mydomain.com                 (app1)
www.mydomain.com/app/app2        (app2)
www.mydomain.com/app/app3        (app3)

解决方法:

我用nginx反向代理解决了这个问题.

这是nginx容器的Dockerfile:

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

这是nginx.conf:

http {

        server {
              listen 80;

              location / {
                proxy_pass http://app1:5001/;
              }

              location /api/ {
                proxy_pass http://app2:5000/api/;
              }
        }
}

然后我在同一个docker网络中站起来了nginx,app1和app2容器.

确保在位置和代理路径中包含尾随/,否则nginx将返回’502:Bad Gateway’.

所有请求都通过端口80上的docker主机,然后将它们移交给nginx容器,然后nginx容器根据url路径将它们转发到app容器.

标签:nginx,docker,digital-ocean
来源: https://codeday.me/bug/20190519/1135411.html