使用 Docker 反向代理 nginx
Reverse proxy nginx with Docker
我有一个带有 Docker 容器的网站。
所以我使用 nginx 反向代理 docker 让我们加密
我关注这个tutorial
但是我的网站无法使用 https。
这是我的 docker 撰写文件:
services:
nginx:
image: pixelfordinner/nginx
container_name: pixelcloud-nginx_proxy-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- "./volumes/conf.d:/etc/nginx/conf.d:ro"
- "./volumes/vhost.d:/etc/nginx/vhost.d:ro"
- "./volumes/certs:/etc/nginx/certs:ro"
- "/usr/share/nginx/html"
nginx-proxy:
image: jwilder/docker-gen
container_name: nginx-proxy
depends_on:
- nginx
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "./data/templates:/etc/docker-gen/templates:ro"
- "./volumes/conf.d:/etc/nginx/conf.d:rw"
entrypoint: /usr/local/bin/docker-gen -notify-sighup pixelcloud-nginx_proxy-nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
letsencrypt-nginx-proxy:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: ssl
depends_on:
- nginx
- nginx-proxy
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./volumes/vhost.d:/etc/nginx/vhost.d:rw"
- "./volumes/certs:/etc/nginx/certs:rw"
environment:
- "NGINX_DOCKER_GEN_CONTAINER=pixelcloud-nginx_proxy-docker_gen"
wordpress:
image: wordpress
environment:
- VIRTUAL_HOST=foo.example.com
- LETSENCRYPT_HOST=foo.example.com
- LETSENCRYPT_EMAIL= mail@example.com
我从 github 下载 nginx.tmpl 文件,并将其复制到 /data/templates/nginx.tmpl
我不明白它不起作用的原因
感谢您的帮助!
更新: 我设法在 wordpress 上设置了 https 而不是 http。
但是我有一个 docker 组合的 Gitlab 实例。在登录页面上,https是工作的,但是当我登录并进入项目主页时,有https但连接不安全。
我想要这样:https://gitlab.exemple.com
您似乎缺少 jrcs/letsencrypt-nginx-proxy-companion
所需的 jwilder/docker-gen
容器。
这意味着您必须添加一个 nginx.tmpl 文件并将其装载到您的 jwilder/docker-gen
容器中。
您还需要从 nginx-proxy
容器共享 /etc/nginx/vhost.d
卷。
更新:
您的服务 运行 docker-gen
图像的 container_name
应该是 pixelcloud-nginx_proxy-docker_gen
因为它需要匹配 NGINX_DOCKER_GEN_CONTAINER
环境变量。所以你应该有:
nginx-proxy:
image: jwilder/docker-gen
container_name: pixelcloud-nginx_proxy-docker_gen
我有一个带有 Docker 容器的网站。 所以我使用 nginx 反向代理 docker 让我们加密 我关注这个tutorial
但是我的网站无法使用 https。
这是我的 docker 撰写文件:
services:
nginx:
image: pixelfordinner/nginx
container_name: pixelcloud-nginx_proxy-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- "./volumes/conf.d:/etc/nginx/conf.d:ro"
- "./volumes/vhost.d:/etc/nginx/vhost.d:ro"
- "./volumes/certs:/etc/nginx/certs:ro"
- "/usr/share/nginx/html"
nginx-proxy:
image: jwilder/docker-gen
container_name: nginx-proxy
depends_on:
- nginx
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "./data/templates:/etc/docker-gen/templates:ro"
- "./volumes/conf.d:/etc/nginx/conf.d:rw"
entrypoint: /usr/local/bin/docker-gen -notify-sighup pixelcloud-nginx_proxy-nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
letsencrypt-nginx-proxy:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: ssl
depends_on:
- nginx
- nginx-proxy
volumes_from:
- nginx
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./volumes/vhost.d:/etc/nginx/vhost.d:rw"
- "./volumes/certs:/etc/nginx/certs:rw"
environment:
- "NGINX_DOCKER_GEN_CONTAINER=pixelcloud-nginx_proxy-docker_gen"
wordpress:
image: wordpress
environment:
- VIRTUAL_HOST=foo.example.com
- LETSENCRYPT_HOST=foo.example.com
- LETSENCRYPT_EMAIL= mail@example.com
我从 github 下载 nginx.tmpl 文件,并将其复制到 /data/templates/nginx.tmpl
我不明白它不起作用的原因
感谢您的帮助!
更新: 我设法在 wordpress 上设置了 https 而不是 http。 但是我有一个 docker 组合的 Gitlab 实例。在登录页面上,https是工作的,但是当我登录并进入项目主页时,有https但连接不安全。 我想要这样:https://gitlab.exemple.com
您似乎缺少 jrcs/letsencrypt-nginx-proxy-companion
所需的 jwilder/docker-gen
容器。
这意味着您必须添加一个 nginx.tmpl 文件并将其装载到您的 jwilder/docker-gen
容器中。
您还需要从 nginx-proxy
容器共享 /etc/nginx/vhost.d
卷。
更新:
您的服务 运行 docker-gen
图像的 container_name
应该是 pixelcloud-nginx_proxy-docker_gen
因为它需要匹配 NGINX_DOCKER_GEN_CONTAINER
环境变量。所以你应该有:
nginx-proxy:
image: jwilder/docker-gen
container_name: pixelcloud-nginx_proxy-docker_gen