#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