docker 反向代理 - 如何使用 htpasswd 授权
docker reverse proxy - how to use authorization with htpasswd
我想使用基本身份验证支持 来保护我的反向代理服务器。根据 [自述文件][1],我已将 -v /path/to/htpasswd:/etc/nginx/htpasswd
添加到我的 docker-compose 文件中:
version: '2'
services:
frontproxy:
image: traskit/nginx-proxy
container_name: frontproxy
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen"
restart: always
environment:
DEFAULT_HOST: default.vhost
HSTS: "off"
ports:
- "80:80"
- "443:443"
volumes:
- /home/frank/Data/htpasswd:/etc/nginx/htpasswd
- /var/run/docker.sock:/tmp/docker.sock:ro
- "certs-volume:/etc/nginx/certs:ro"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
nginx-letsencrypt-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- "certs-volume:/etc/nginx/certs"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
volumes_from:
- "frontproxy"
volumes:
certs-volume:
htpasswd
文件包含我从工作中的 nginx 服务器的 .htpasswd
文件复制的内容。我知道 .htpasswd
和 htpasswd
之间的区别,但不明白应该在此处使用哪种格式和名称。
代理服务器连接到服务(在我的例子中是 radicale)而不检查授权(密码不存储在浏览器中!)。
让nginx检查权限必须改什么?
[1]: https://github.com/nginx-proxy/nginx-proxy#readme
我认为你读错了,这里的 htpasswd 是一个文件夹,你对应的 htpasswd 文件的名称必须与你的虚拟主机名相匹配:
you have to create a file named as its equivalent VIRTUAL_HOST variable on directory /etc/nginx/htpasswd/$VIRTUAL_HOST
这意味着:
- 您将文件夹装载到 docker 容器的 /etc/nginx/htpasswd 中
- 在此文件夹中,您创建一个根据您的虚拟主机地址命名的密码文件,如 example.de:
- 您可以使用以下命令创建相应的文件:
htpasswd -c example.de username
我想使用基本身份验证支持 来保护我的反向代理服务器。根据 [自述文件][1],我已将 -v /path/to/htpasswd:/etc/nginx/htpasswd
添加到我的 docker-compose 文件中:
version: '2'
services:
frontproxy:
image: traskit/nginx-proxy
container_name: frontproxy
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.docker_gen"
restart: always
environment:
DEFAULT_HOST: default.vhost
HSTS: "off"
ports:
- "80:80"
- "443:443"
volumes:
- /home/frank/Data/htpasswd:/etc/nginx/htpasswd
- /var/run/docker.sock:/tmp/docker.sock:ro
- "certs-volume:/etc/nginx/certs:ro"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
nginx-letsencrypt-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- "certs-volume:/etc/nginx/certs"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
volumes_from:
- "frontproxy"
volumes:
certs-volume:
htpasswd
文件包含我从工作中的 nginx 服务器的 .htpasswd
文件复制的内容。我知道 .htpasswd
和 htpasswd
之间的区别,但不明白应该在此处使用哪种格式和名称。
代理服务器连接到服务(在我的例子中是 radicale)而不检查授权(密码不存储在浏览器中!)。
让nginx检查权限必须改什么? [1]: https://github.com/nginx-proxy/nginx-proxy#readme
我认为你读错了,这里的 htpasswd 是一个文件夹,你对应的 htpasswd 文件的名称必须与你的虚拟主机名相匹配:
you have to create a file named as its equivalent VIRTUAL_HOST variable on directory /etc/nginx/htpasswd/$VIRTUAL_HOST
这意味着:
- 您将文件夹装载到 docker 容器的 /etc/nginx/htpasswd 中
- 在此文件夹中,您创建一个根据您的虚拟主机地址命名的密码文件,如 example.de:
- 您可以使用以下命令创建相应的文件:
htpasswd -c example.de username