基础认证中间件
标准应用程序和基于 Docker Compose 的应用程序/一键服务的配置略有不同。
标准应用程序
traefik.http.middlewares.<随机唯一名称>.basicauth.users=test:$2y$12$ci.4U63YX83CwkyUrjqxAucnmi2xXOIlEF6T/KdP9824f1Rf1iyNG
traefik.http.routers.<唯一路由器名称>.middlewares=<随机唯一名称>在上面的示例中,我们使用 test 作为用户名和 test 作为密码。
INFO
您很可能已经设置了 traefik.http.middlewares 标签。在这种情况下,您必须将 随机唯一名称 中间件附加到现有值。 例如:
traefik.http.routers.<唯一路由器名称>.middlewares=gzip,<随机唯一名称>注意:<随机唯一名称> 和 <唯一路由器名称> 是占位符。在添加到您自己的标签部分时,您需要替换它们。 <随机唯一名称> 是中间件的唯一名称,您需要自己命名。<唯一路由器名称> 是 Coolify 已经为您生成的路由器的唯一名称。
Nginx 简单 Web 容器示例
假设您有一个由 Coolify 生成的 nginx 简单 Web 容器,其 Dockerfile 如下:
FROM nginx:alpine
COPY . /usr/share/nginx/htmlCoolify 生成的 容器标签 如下所示:
traefik.enable=true
traefik.http.middlewares.gzip.compress=true
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
traefik.http.routers.http-0-wc04wo4ow4scokgsw8wow4s8.entryPoints=http
traefik.http.routers.http-0-wc04wo4ow4scokgsw8wow4s8.middlewares=redirect-to-https
traefik.http.routers.http-0-wc04wo4ow4scokgsw8wow4s8.rule=Host(`ngnixsite.mysite.com`) && PathPrefix(`/`)
traefik.http.routers.http-0-wc04wo4ow4scokgsw8wow4s8.service=http-0-wc04wo4ow4scokgsw8wow4s8
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.entryPoints=https
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.middlewares=gzip
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.rule=Host(`ngnixsite.mysite.com`) && PathPrefix(`/`)
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.service=https-0-wc04wo4ow4scokgsw8wow4s8
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.tls.certresolver=letsencrypt
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.tls=true
traefik.http.services.http-0-wc04wo4ow4scokgsw8wow4s8.loadbalancer.server.port=80
traefik.http.services.https-0-wc04wo4ow4scokgsw8wow4s8.loadbalancer.server.port=80
caddy_0.encode=zstd gzip
caddy_0.handle_path.0_reverse_proxy={{upstreams 80}}
caddy_0.handle_path=/*
caddy_0.header=-Server
caddy_0.try_files={path} /index.html /index.php
caddy_0=https://ngnixsite.73rdst.com
caddy_ingress_network=coolify如果您想向此服务添加基础认证,假设您想将认证中间件命名为 mybasicauth,您可以在第一行 traefik.enable=true 下方添加以下标签:
traefik.http.middlewares.mybasicauth.basicauth.users=test:$2y$12$ci.4U63YX83CwkyUrjqxAucnmi2xXOIlEF6T/KdP9824f1Rf1iyNG
注意,mybasicauth 已替换了 <随机唯一名称> 占位符。换句话说,您已将自己的认证中间件命名为 mybasicauth。
然后,您需要将中间件添加到路由器标签,由于已经设置了一个或多个中间件,您需要将新中间件附加到现有值。
例如,您需要将当前行
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.middlewares=gzip
更新为:
traefik.http.routers.https-0-wc04wo4ow4scokgsw8wow4s8.middlewares=gzip,mybasicauth
注意,在这种情况下,<唯一路由器名称> 已被替换为 https-0-wc04wo4ow4scokgsw8wow4s8,这是 Coolify 已经为您生成的路由器的唯一名称。
您的 nginx 简单 Web 容器现在受到基础认证的保护。
Docker Compose 和服务
要向您的服务添加 basicauth 中间件,您需要向 docker-compose.yml 文件添加以下标签:
services:
nginx-simple-web-container::
image: 'nginx:alpine'
ports:
- '8080:80'
labels:
- 'traefik.http.middlewares.<随机唯一名称>.basicauth.users=test:$2y$12$ci.4U63YX83CwkyUrjqxAucnmi2xXOIlEF6T/KdP9824f1Rf1iyNG'您应该用中间件的唯一名称替换占位符 <随机唯一名称>。例如,您可能将其命名为 mybasicauth,然后 将占位符替换为 mybasicauth。该标签将如下所示:
labels:
- 'traefik.http.middlewares.mybasicauth.basicauth.users=test:$2y$12$ci.4U63YX83CwkyUrjqxAucnmi2xXOIlEF6T/KdP9824f1Rf1iyNG'我们现在已向 nginx-simple-web-container 服务添加了 basicauth 中间件。
您的 nginx 简单 Web 容器现在受到基础认证的保护,用户名为 test,密码为 test。
注意:在应用基础认证标签时,像 $、@ 和 , 这样的特殊字符必须转义,以避免解析错误。 例如,如果您使用双引号,则用引号括住标签值,并在特殊字符前使用反斜杠 ()。
如何生成用户/密码?
您需要在 basicauth.users 标签中设置您的用户名和密码。
您可以使用 htpasswd 命令生成:
htpasswd -nbB test test这将为用户 test 生成密码哈希,密码为 test。 然后,您可以用所需的用户名和密码替换 test。然后在上面的 basicauth.users 标签中替换生成的哈希。
注意:htpasswd 命令在大多数 Linux 发行版上可用。它是 Debian/Ubuntu 上 apache2-utils 包的一部分, 可以在此处找到。
