обратный прокси-сервер docker — как использовать авторизацию с помощью htpasswd

#jwilder-nginx-proxy

#jwilder-nginx-proxy

Вопрос:

Я хочу защитить свой обратный прокси-сервер с помощью базовой поддержки аутентификации. В соответствии с [прочитанным мной] [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 , но не понимаю, какой формат и имя следует использовать здесь.

Прокси-сервер подключается к сервисам (в моем случае radicale) без проверки авторизации (пароли не хранятся в браузере!).

Что необходимо изменить, чтобы nginx проверял авторизацию? [1]: https://github.com/nginx-proxy/nginx-proxy#readme

Ответ №1:

Я думаю, вы перечитали, что htpasswd здесь — это папка, и имя соответствующего файла htpasswd должно совпадать с именем вашего виртуального хоста:

вы должны создать файл с именем, эквивалентным переменной VIRTUAL_HOST, в каталоге /etc/nginx/htpasswd /$VIRTUAL_HOST

Это означает:

  • Вы монтируете папку в /etc/nginx /htpasswd вашего контейнера docker
  • В этой папке вы создаете файл passwdfile с именем в соответствии с вашим адресом виртуального хостинга, например example.de:
  • Вы можете создать соответствующий файл с помощью команды: htpasswd -c example.de username