将nginx反向代理设置为从另一个docker容器提供服务

我有一个在端口号3000运行的docker容器中的应用程序,暴露给主机(端口3050映射到容器的端口3000),我想使用这个nginx-proxy来指向http:// localhost / users之类的URL点/代理到http:// localhost:3050 / users.

我在docker-compose.yml文件中有这个块:

 Nginx_service:
   image: jwilder/Nginx-proxy
   container_name: Nginx_server
   ports:
    - "80:80"
    - "443:443"
   volumes:
    - ./ssl_certs:/etc/Nginx/certs
    - /var/run/docker.sock:/tmp/docker.sock:ro

下面是docker-compose.yml中定义的容器,它在docker容器中的端口3000上运行我的app:

api:
   build: .
   container_name: api
   environment:
    - VIRTUAL_HOST= service.myserver.com
    - VIRTUAL_PROTO=https
   volumes:
    - "./API:/host"
   links:
    - Mongo:Mongo
   ports:
    - "3050:3000"

在我启动docker容器后,我可以在浏览器中打开http:// localhost:3050 / users,但不能在http:// localhost / users中打开,这会给我一个503暂时不可用的服务错误.

也许我把整个想法弄错了,有人可以用Nginx反向代理帮助或纠正我吗?

解决方法:

在做了一些搜索之后,我能够把一个工作的docker-compose.yml放在一起,它有一个工作的Nginx反向代理(图像:docker hub中的jwilder / Nginx-proxy)到我在的一个基于node.js的web应用程序单独的容器.

使其发挥作用的关键是:

>在Nginx反向代理容器中设置VIRTUAL_HOST =端口,此端口应该是我的node.js应用程序在其容器中运行的端口(而不是在主机上映射的端口!)
>如果您希望Nginx反向代理位于https上,则应设置SSL证书,但应将http(而不是https)设置为Web应用程序容器中的环境变量VIRTUAL_PROTO = http.

下面是工作的docker-compose.yml:

Nginx_service:
   image: jwilder/Nginx-proxy
   container_name: Nginx_server
   ports:
    - "80:80"
    - "443:443"
   volumes:
    - ./ssl_certs:/etc/Nginx/certs
    - /var/run/docker.sock:/tmp/docker.sock:ro
   environment:
    - VIRTUAL_PORT=3000  # 3050 port on host does not work!


api:
   build: .
   container_name: api
   environment:
    - VIRTUAL_HOST=service.myserver.com
    - VIRTUAL_PROTO=http   # should be http even if you use https to the proxy, because node.js uses http!
   volumes:
    - "./API:/host"
   links:
    - Mongo:Mongo
   ports:
    - "3050:3000"

希望这有助于某天某人从搜索引擎登陆此页面

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...