nginx-proxy 设置一个运行 nginx 和 docker-gen 的容器。 docker-gen 为 nginx 生成反向代理配置,并在容器启动和停止时重新加载 nginx。
请参阅适用于 Docker 的自动化 Nginx 反向代理,了解您可能想要使用它的原因。
运行它:
docker run --detach
--name nginx-proxy
--publish 80:80
--volume /var/run/docker.sock:/tmp/docker.sock:ro
nginxproxy/nginx-proxy:1.6
然后启动您想要使用环境变量VIRTUAL_HOST=subdomain.yourdomain.com
进行代理的任何容器(此处为 nginx 容器)
docker run --detach
--name your-proxied-app
--env VIRTUAL_HOST=foo.bar.com
nginx
如果您的 DNS 设置为将foo.bar.com
解析到运行 nginx-proxy 的主机,则对http://foo.bar.com
的请求将被路由到VIRTUAL_HOST
环境变量设置为foo.bar.com
(在本例中为 your-proxied-app容器)。
被代理的容器必须:
Dockerfile
中使用EXPOSE
指令或使用docker run
或docker create
的--expose
标志来公开要代理的端口。--net
标志,则它将仅附加到默认桥接网络。这意味着它将无法连接到除网桥之外的网络上的容器。注意:不支持在VIRTUAL_HOST
中提供端口号,请根据您想要实现的目标查看虚拟端口或自定义外部 HTTP/HTTPS 端口。
nginx-proxy 镜像有两种版本。
该镜像基于 nginx:mainline 镜像,该镜像本身基于 debian slim 镜像。
docker pull nginxproxy/nginx-proxy:1.6
-alpine
后缀)该镜像基于 nginx:alpine 镜像。
docker pull nginxproxy/nginx-proxy:1.6-alpine
latest
和alpine
注释:不建议使用latest
( nginxproxy/nginx-proxy
、 nginxproxy/nginx-proxy:latest
)或alpine
( nginxproxy/nginx-proxy:alpine
)标签进行生产设置。
这些标签指向main
分支中的最新提交。它们不承担任何稳定性承诺,并且使用它们可能会使您的 nginx-proxy 设置面临对非向后兼容版本(或具有重大更改的版本)进行不受控制的更新的风险。您应该始终明确指定要使用的版本,以确保更新图像时您的设置不会中断。
请检查文档部分。