在goauthentik/authentik中配置反向代理的完整指南
authentik The authentication glue you need. 项目地址: https://gitcode.com/gh_mirrors/au/authentik
前言
在现代身份认证系统中,goauthentik/authentik作为一个开源的IDP(身份提供者)解决方案,经常需要部署在反向代理之后。本文将详细介绍如何正确配置反向代理来支持authentik的各项功能,特别是WebSocket通信。
反向代理的基本要求
由于authentik使用WebSocket与Outposts进行通信,这对反向代理提出了特定要求:
- 不支持HTTP/1.0:HTTP/1.0规范不支持WebSocket或协议升级
- 必须传递的HTTP头:
X-Forwarded-Proto
:告知authentik是否通过HTTPS连接X-Forwarded-For
:用于获取客户端真实IPHost
:用于安全检查和WebSocket握手Connection: Upgrade
和Upgrade: WebSocket
:用于WebSocket端点
安全建议
- 使用现代TLS配置,建议禁用TLS 1.2以下版本
- 如果反向代理不是从私有IP访问authentik,需要在authentik服务器上配置信任的代理CIDR
Nginx配置详解
下面是一个完整的Nginx配置示例,包含详细注释:
# 定义authentik上游服务器
upstream authentik {
server <authentik服务器主机名>:9443;
# 保持10个持久连接以提高性能
keepalive 10;
}
# 根据$http_upgrade变量决定Connection头值
map $http_upgrade $connection_upgrade_keepalive {
default upgrade; # 如果有升级请求,则设置为upgrade
'' ''; # 否则为空
}
# HTTP服务器配置
server {
listen 80;
listen [::]:80;
server_name sso.domain.tld;
# 强制重定向到HTTPS
return 301 https://$host$request_uri;
}
# HTTPS服务器配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name sso.domain.tld;
# TLS证书配置
ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;
# 启用HSTS
add_header Strict-Transport-Security "max-age=63072000" always;
# 代理配置
location / {
proxy_pass https://authentik;
proxy_http_version 1.1; # 必须使用HTTP/1.1
# 关键头信息传递
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade_keepalive;
}
}
配置说明
- 上游服务器:
upstream
块定义了authentik服务器的位置和端口 - HTTP到HTTPS重定向:强制所有HTTP流量使用HTTPS
- WebSocket支持:通过
map
指令和相应的头信息实现协议升级 - 性能优化:使用
keepalive
减少连接建立开销
常见问题解决
-
WebSocket连接失败:
- 检查
Upgrade
和Connection
头是否正确传递 - 确认Nginx版本支持WebSocket代理
- 检查
-
客户端IP显示不正确:
- 检查
X-Forwarded-For
头是否设置 - 确认authentik服务器配置了正确的信任代理CIDR
- 检查
-
HTTPS相关问题:
- 确保证书路径正确
- 检查证书链是否完整
进阶配置
如果需要将authentik部署在子路径下(如/auth
),需要:
- 在Nginx配置中调整
location
块 - 在authentik配置中设置相应的
web.path
参数
总结
正确配置反向代理是部署authentik的关键步骤。本文提供的Nginx配置模板涵盖了HTTPS、WebSocket支持和性能优化等关键方面。根据实际环境调整后,可以确保authentik在反向代理后稳定运行并提供完整功能。
authentik The authentication glue you need. 项目地址: https://gitcode.com/gh_mirrors/au/authentik
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考