如何在群晖用nginx-proxy-manager来实现对Dozzle(等)反向代理后用账号密码访问
Dozzle可以监控群晖容器的日志,有时候免不了需要外网访问快速查看容器日志,所以就安装了dozzle。但是发现反向代理https后没有账号密码就能直接查看,所以就设计了一个简单web权限管理。
我直接使用的docker compose配置yaml构建生成。现在有容器的基本我都这样生成,因为配置参数一旦设置好,就算删除了容器,项目在就能很快构建完成。
yaml配置如下:
version: "3"
services:
dozzle:
container_name: dozzle
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- 9000:8080
这样构建后就生成了dozzle容器日志查看,一目了然。
但是这样只是本地ip+端口访问能看,下面就是npm中反向代理后账号密码访问的方法:
首先你去找能生成.htpasswd文件的网址或者工具,将生成的哈希密码粘贴到桌面的文本文档中并将后缀名改成.htpasswd。
然后将改文件拷贝到npm能访问的文件夹中,我是放在其他文件夹然后给npm挂载这个文件夹的形式,如果图方便可以直接放入npm,因为一般都会挂载npm的文件夹。如果npm没有权限访问.htpasswd反向代理后会报错443。到这里基本未完成一大半了。然后就是在npm中反向代理配置如下:
在npm的自定义模块也就是advanced的Custom Nginx Configuration中必须正确配置auth_basic_user_file的后面文件位置,就是.htpasswd存放的位置。
location / {
auth_basic "Restricted Content";
auth_basic_user_file 你存放.htpasswd的位置(注意挂载后的目录名称);proxy_pass http://172.17.0.1:9000;
proxy_set_header Host $http_host;
proxy_redirect http:// https://;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_http_version 1.1;
}
到这里应该就没问题了。也可以关闭缓存这样每次登录都需要输入,或者加入会话超时的方法。以此类推其他容器也可以。