Kho*_*zzy 2 security authentication nginx docker
考虑运行一个带有暴露特定端口的 Web 应用程序的 Docker 容器。如何在访问 URL (HTTP BASIC AUTH) 之前应用额外的安全层?
Docker 引擎版本 >= 1.9.1
通常,您将一个容器用于身份验证,例如 NGiNX。
这在“ Authenticating proxy with nginx ”中有描述,不仅增加了基本的认证,还增加了ssl(https)
然后,该 Web 服务器将反向代理到您的容器。
您有一个更通用的解决方案(基于反向代理 NGINX) jwilder/nginx-proxy
nginx-proxy 设置一个运行 nginx 和
docker-gen.
docker-gen为 nginx 生成反向代理配置,并在容器启动和停止时重新加载 nginx。
请参阅“用于 Docker 的自动 Nginx 反向代理”的用例。
以下是基于jwilder/nginx-proxy 基本身份验证支持的说明的配置示例:
该docker-compose.yml文件(通过运行使用docker-compose up -d):
version: '2.1'
services:
nginx-proxy:
container_name: nginx-proxy
restart: always
image: jwilder/nginx-proxy
networks:
- proxynet
ports:
- "80:80"
volumes:
- /srv/docker/nginx/htpasswd:/etc/nginx/htpasswd
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
proxynet:
external: true
Run Code Online (Sandbox Code Playgroud)
这是一个简单的容器,它使用域名www.example.com 的代理:
version: '3.3'
services:
example:
container_name: www.example.com
image: php:7.2-apache
restart: always
networks:
- proxynet
expose:
- "80"
environment:
- VIRTUAL_HOST=www.example.com
- VIRTUAL_PORT=80
networks:
proxynet:
external: true
Run Code Online (Sandbox Code Playgroud)
在 下/srv/docker/nginx/htpasswd/,放置一个www.example.com文件,其中包含:
test:wTVo4pnGgDWBo
Run Code Online (Sandbox Code Playgroud)
访问http://www.example.com(替换为您的实际域名),然后系统会提示您输入用户名和密码(test:test在本例中)。
| 归档时间: |
|
| 查看次数: |
12840 次 |
| 最近记录: |