通过authentik的认证体系对NPM搭建的站点进行二次保护
1、Authentik与NPM在同一台宿主机
需保证Authentik和NPM在同一网络,在NPM通过docker的名字进行访问,不要使用IP,如server
高级的设置如下:
location / {
proxy_pass http://server:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 关键:锁定 4333
proxy_set_header Host $host:4433;
proxy_set_header X-Forwarded-Host $host:4433;
proxy_set_header X-Forwarded-Port 4433;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;}
error_page 497 https://$http_host$request_uri;
Authentik不需做设置
2、Authentik与NPM不在同一台宿主机
在NPM通过ip访问Authentik,如192.168.2.195
高级的设置如下:
location / {
proxy_pass http://192.168.2.195:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 关键:锁定 4333
proxy_set_header Host $host:4333;
proxy_set_header X-Forwarded-Host $host:4333;
proxy_set_header X-Forwarded-Port 4333;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;}
error_page 497 https://$http_host$request_uri;
Authentik不需做设置
放在最顶部,解决大 Cookie 导致的 500
error_page 497 https://$http_host$request_uri;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 4 128k;
1. 验证接口(去掉 proxy_pass 结尾的斜杠)
location /outpost.goauthentik.io/ {
proxy_pass http://192.168.2.195:9000; # 不要在这里加 /outpost... 否则路径会重叠
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;}
2. 根路径拦截
location / {
# 这一行必须和上面的 location 对应
auth_request /outpost.goauthentik.io/auth/nginx;
# 捕捉验证失败
error_page 401 = @goauthentik_proxy_redirect;
# 你的后端应用
proxy_pass http://192.168.2.196:8080;
# 将验证后的用户信息和 Cookie 传给后端及浏览器
auth_request_set $auth_cookie $upstream_http_set_cookie;
add_header Set-Cookie $auth_cookie;
# 获取 authentik 传回的用户信息(可选,方便后端识别用户)
auth_request_set $authentik_username $upstream_http_x_authentik_username;
proxy_set_header X-Authentik-Username $authentik_username;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;}
3. 登录跳转逻辑
location @goauthentik_proxy_redirect {
internal;
# 使用当前正在访问的应用域名 (crawlab.198388.xyz:4333) 来触发 start
return 307 $scheme://$http_host/outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri;}
Authentik设置相应的Proxy Provider即可
本文著作权归作者 [ 爱生活的懒人 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
