本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
okta-nginx 是一个 Docker 镜像,通过 Okta OpenID Connect 授权码流程(Authorization Code flow)保护上游服务器(upstream server)。该镜像基于 NGINX,集成 Okta OIDC 认证机制,实现对上游应用的身份验证与授权控制,确保只有通过 Okta 认证的用户才能访问受保护资源。
授权码流程 的 OpenID Connect 应用(在 Okta 开发者控制台创建)| 变量名 | 描述 |
|---|---|
PROXY_PASS | 上游服务器地址,需包含协议、主机和端口,例如 http://localhost:8080 |
CLIENT_ID | Okta OIDC 应用的客户端 ID,可在 Okta 应用「General」标签页获取 |
CLIENT_SECRET | Okta OIDC 应用的客户端密钥,可在 Okta 应用「General」标签页获取 |
ISSUER | Okta 授权服务器 URL,格式为 {Okta 组织 URL}/oauth2/default,例如 [***](组织 URL 可在 Okta 控制台首页右上角获取) |
LOGIN_REDIRECT_URL | 登录回调 URL,必须在 Okta 应用「General」标签页的「登录重定向 URI」中配置。默认路径为 /sso/authorization-code/callback,若设置 SSO_PATH 则为 ${SSO_PATH}/authorization-code/callback |
| 变量名 | 默认值 | 描述 |
|---|---|---|
APP_POST_LOGIN_URL | - | 认证完成后重定向的应用特定 URL,原始请求 URL 通过 state 查询参数传递 |
COOKIE_DOMAIN | 当前域名 | Cookie 作用域,设置后可支持子域名共享(例如 .example.com) |
COOKIE_NAME | okta-jwt | 存储 Identity Token 的 Cookie 名称 |
INJECT_REFRESH_JS | true | 是否注入自动刷新 Token 的 JavaScript,设为 false 禁用 |
ENDPOINT_AUTHORIZE | ${ISSUER}/v1/authorize | 授权端点 URL |
ENDPOINT_LOGOUT | ${ISSUER}/v1/logout | 登出端点 URL |
ENDPOINT_TOKEN | ${ISSUER}/v1/token | Token 获取端点 URL |
LISTEN | 80 | NGINX 监听端口,支持 TLS 或 Unix 套接字(参考 nginx listen) |
LOCATIONS_PROTECTED | / | 需保护的路径列表(逗号分隔),例如 /api,/admin |
LOCATIONS_UNPROTECTED | 禁用 | 无需保护的路径列表(逗号分隔),直接代理至上游服务器 |
LOGOUT_REDIRECT_URL | 应用源 URL(origin) | 登出后重定向 URL(可相对或绝对路径),登出路径为 /sso/logout 或 ${SSO_PATH}/logout |
PROXY_SET_HEADER_NAMES | 无 | 需传递给上游的请求头名称列表(逗号分隔),需与 PROXY_SET_HEADER_VALUES 配合使用 |
PROXY_SET_HEADER_VALUES | 无 | 与 PROXY_SET_HEADER_NAMES 对应的头值列表(逗号分隔),支持基于断言的 Go 模板(例如 {{.groups}},可使用 sprig 函数) |
REQUEST_TIMEOUT | 30 | 调用 Okta 端点的超时时间(秒) |
SERVER_NAME | _ | NGINX 虚拟主机名称(参考 nginx server_name) |
SSO_PATH | /sso/ | SSO 错误和刷新端点的路径,需包含首尾斜杠(例如 /okta-sso/) |
UPDATE_SCRIPT | 无 | 配置更新脚本路径(可执行 shell 脚本),首次更新传递参数 true,后续传递 false |
UPDATE_PERIOD_SECONDS | 60 | 若设置 UPDATE_SCRIPT,脚本的执行周期(秒,启动时执行一次,之后按周期执行) |
VALIDATE_CLAIMS_TEMPLATE | 禁用 | 断言验证模板(Go 模板),需返回 true 或 1,例如 {{if has "admin" .groups}}true{{else}}false{{end}}(支持 sprig 函数) |
docker run -d \ -p 80:80 \ -e PROXY_PASS="[***]" \ -e CLIENT_ID="your-okta-client-id" \ -e CLIENT_SECRET="your-okta-client-secret" \ -e ISSUER="[***]" \ -e LOGIN_REDIRECT_URL="[***]" \ -e LOCATIONS_PROTECTED="/api,/admin" \ -e LOCATIONS_UNPROTECTED="/public" \ okta-nginx:latest
version: '3' services: okta-nginx: image: okta-nginx:latest ports: - "80:80" environment: - PROXY_PASS=[***] - CLIENT_ID=your-okta-client-id - CLIENT_SECRET=your-okta-client-secret - ISSUER=[***] - LOGIN_REDIRECT_URL=[***] - LOCATIONS_PROTECTED=/api,/admin - LOCATIONS_UNPROTECTED=/public - LISTEN=80 - SERVER_NAME=your-app-domain.com depends_on: - upstream-app upstream-app: image: your-upstream-app:latest # 上游应用配置...
若需从源码构建镜像,执行以下步骤:
构建容器:
./docker-build.sh
在 vars.env 中设置环境变量(参考上文环境变量说明)
运行容器:
./docker-run.sh
认证通过后,镜像会向上游服务器传递以下标准头:
X-Forwarded-User:用户唯一标识,取自 JWT 断言中的 sub 字段http 块将自定义配置文件(.conf 后缀)挂载至 /etc/nginx/conf.d 目录,文件内容会被包含到 NGINX 的 http 块中。
server 块创建文件 /etc/nginx/includes/default-server.conf,其内容会被包含到默认 server 块中,用于自定义服务器级配置(如 SSL 证书、额外的 location 块等)。
通过为环境变量添加数字后缀(从 2 开始),可配置多个独立的 NGINX 虚拟主机(server)。
LISTEN_2:服务器 2 的监听端口(必填)SERVER_NAME_2:服务器 2 的虚拟主机名称(必填)PROXY_PASS_2:服务器 2 的上游地址(必填)LOGIN_REDIRECT_URL_2:服务器 2 的登录回调 URL(必填)APP_POST_LOGIN_URL_2COOKIE_DOMAIN_2COOKIE_NAME_2LOCATIONS_PROTECTED_2LOCATIONS_UNPROTECTED_2LOGOUT_REDIRECT_URL_2PROXY_SET_HEADER_NAMES_2PROXY_SET_HEADER_VALUES_2VALIDATE_CLAIMS_TEMPLATE_2对于第 N 个服务器(N ≥ 2):
_N 后缀(如 LISTEN_N、SERVER_NAME_N)server 块配置需挂载至 /etc/nginx/includes/default-server.N.conf免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429