jwilder-nginx-proxy - docker 反向代理 - 如何使用 htpasswd 授权
问题描述
我想用基本的身份验证支持来保护我的反向代理服务器。根据 [read-me][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
文件包含我.htpasswd
从工作 nginx 服务器的文件中复制的内容。我知道和之间的区别.htpasswd
,htpasswd
但不理解这里应该使用哪种格式和名称。
代理服务器连接到服务(在我的情况下是激进的)而不检查授权(密码不存储在浏览器中!)。
必须更改哪些内容才能使 nginx 检查授权?[1]:https ://github.com/nginx-proxy/nginx-proxy#readme
解决方案
我认为您误读了此处的 htpasswd 是一个文件夹,并且相应的 htpasswd 文件的名称必须与您的虚拟主机名匹配:
您必须在目录 /etc/nginx/htpasswd/$VIRTUAL_HOST 上创建一个名为其等效 VIRTUAL_HOST 变量的文件
这意味着:
- 您将文件夹挂载到 docker 容器的 /etc/nginx/htpasswd 中
- 在此文件夹中,您创建一个根据您的虚拟主机地址命名的 passwdfile,例如 example.de:
- 您可以使用以下命令创建此相应文件:
htpasswd -c example.de username
推荐阅读
- angular - 将 Angular 应用程序部署到具有更改的 baseHref 缺少文件的服务器
- c# - C# 通过 ADOMD 异步运行 MDX 查询
- javascript - 如何:一列上的文本,另一列上的图像,仅使用引导 div?(浮动不工作,绝对定位工作但文本重叠)
- java - Visual Studio Code 是否提供过程/片段来创建类似于 Eclipse 的新 Java 类文件?
- java - Java 监听 UDP 端口
- spring - 在 @Configuration 注释类之前运行 Mongock
- c# - 使用文件操作c#以XML异步写入数百万条记录
- python - 如果顺序可能发生变化,如何使用 python 替换几个单词?
- angular - 从角度的主要组件运行测试
- typescript - monorepo 中的打字稿路径别名