dzdh
V2EX  ›  Docker

jwilder/nginx-proxy 这个镜像是啥原理可以动态设置多域名

  •  
  •   dzdh · Mar 30, 2021 · 2280 views
    This topic created in 2050 days ago, the information mentioned may be changed or developed.

    https://www.yannmoisan.com/docker.html

    docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
    docker run -d -e VIRTUAL_HOST=site1 ymn/site1
    docker run -d -e VIRTUAL_HOST=site2 ymn/site2
    

    怎么就nginx-proxy就能获取到 site1.domain 然后当 nginx-proxy收到 80 端口请求后再动态转发给 site 这个容器的?

    如果不用这种形式的话。是不是就只能是改容器内的 nginx 的配置文件?

    7 replies  •  2021-03-30 10:35:46 +08:00
    Tink
    Tink
    Mar 30, 2021 via Android
    1
    反向代理吧
    dzdh
    dzdh
    OP
    Mar 30, 2021
    2
    @Tink

    三个隔离的容器 proxy 是怎么知道哪个 domain 『绑』在哪个 container 上?端口是什么?然后把请求发过去的
    Tink
    Tink
    Mar 30, 2021 via Android
    3
    @dzdh 这明显是要配置的啊,你看文章啊
    Tink
    Tink
    Mar 30, 2021 via Android
    4
    @dzdh

    Let’s create a new project, divided in 3 folders : site1, site2, proxy. One folder for each container.

    proxy
    Dockerfile
    conf
    conf.d
    site1.conf
    site2.conf
    site1
    Dockerfile
    index.html
    site2
    Dockerfile
    index.html
    oott123
    oott123
    Mar 30, 2021 via Android
    5
    人家写得很清楚…

    Docker expose a remote API that allows to automate many tasks. So some projects leverage this API, like nginx-proxy which generate automatically the config of the proxy:
    Kilerd
    Kilerd
    Mar 30, 2021
    6
    本质上这个就是用 docker-gen 来实时读取 docker container 的列表,然后筛选出带 host 标签的 container,然后生成一份最新的 nginx.conf,然后执行 nginx reload, 就这么简单
    dzdh
    dzdh
    OP
    Mar 30, 2021
    7
    @oott123
    @Kilerd

    好的,看了 dockerfile,使用了 docker-gen,定时刷 共享的 docker.sock 调用接口 /containers/json 然后再遍历所有容器再调用 /containers/$containerId/json 再获取 {{.Config.Env}} 然后刷新 nginx 配置文件

    如果不用这种方案是不是就只能 把配置文件固定在镜像内然后再启动 service 了(swarm)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2426 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:52 · PVG 08:52 · LAX 16:52 · JFK 19:52
    ♥ Do have faith in what you're doing.