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 文件复制的内容。我知道 .htpasswdhtpasswd 之间的区别,但不明白应该在此处使用哪种格式和名称。

代理服务器连接到服务(在我的例子中是 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