在goauthentik/authentik中配置反向代理的完整指南

在goauthentik/authentik中配置反向代理的完整指南

authentik The authentication glue you need. authentik 项目地址: https://gitcode.com/gh_mirrors/au/authentik

前言

在现代身份认证系统中,goauthentik/authentik作为一个开源的IDP(身份提供者)解决方案,经常需要部署在反向代理之后。本文将详细介绍如何正确配置反向代理来支持authentik的各项功能,特别是WebSocket通信。

反向代理的基本要求

由于authentik使用WebSocket与Outposts进行通信,这对反向代理提出了特定要求:

  1. 不支持HTTP/1.0:HTTP/1.0规范不支持WebSocket或协议升级
  2. 必须传递的HTTP头
    • X-Forwarded-Proto:告知authentik是否通过HTTPS连接
    • X-Forwarded-For:用于获取客户端真实IP
    • Host:用于安全检查和WebSocket握手
    • Connection: UpgradeUpgrade: WebSocket:用于WebSocket端点

安全建议

  1. 使用现代TLS配置,建议禁用TLS 1.2以下版本
  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;
    }
}

配置说明

  1. 上游服务器upstream块定义了authentik服务器的位置和端口
  2. HTTP到HTTPS重定向:强制所有HTTP流量使用HTTPS
  3. WebSocket支持:通过map指令和相应的头信息实现协议升级
  4. 性能优化:使用keepalive减少连接建立开销

常见问题解决

  1. WebSocket连接失败

    • 检查UpgradeConnection头是否正确传递
    • 确认Nginx版本支持WebSocket代理
  2. 客户端IP显示不正确

    • 检查X-Forwarded-For头是否设置
    • 确认authentik服务器配置了正确的信任代理CIDR
  3. HTTPS相关问题

    • 确保证书路径正确
    • 检查证书链是否完整

进阶配置

如果需要将authentik部署在子路径下(如/auth),需要:

  1. 在Nginx配置中调整location
  2. 在authentik配置中设置相应的web.path参数

总结

正确配置反向代理是部署authentik的关键步骤。本文提供的Nginx配置模板涵盖了HTTPS、WebSocket支持和性能优化等关键方面。根据实际环境调整后,可以确保authentik在反向代理后稳定运行并提供完整功能。

authentik The authentication glue you need. authentik 项目地址: https://gitcode.com/gh_mirrors/au/authentik

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗津易Philip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值