7.5. 使用反向代理
当代理转发 http 或重新加密 TLS 请求时,应设置 proxy-headers
选项。根据主机名设置(部分或全部 URL)可能会动态确定。
如果选择了 转发
或 xforwarded
,请确保您的反向代理正确设置并分别覆盖 Forwarded
或 X-Forwarded EgressIP
标头。要设置这些标头,请查阅您的反向代理文档。错误配置会使红帽构建 Keycloak 暴露于安全漏洞。
7.5.1. 完全动态 URL。
例如,如果您的反向代理正确设置了 Forwarded 标头,而您不想硬编码主机名,则红帽构建的 Keycloak 可以容纳这一点。您只需要启动服务器,如下所示:
bin/kc.[sh|bat] start --hostname-strict false --proxy-headers forwarded
使用这个配置,服务器会尊重 Forwarded 标头设置的值。这也意味着所有端点都是动态解析的。
7.5.2. 部分动态 URL
当 hostname
选项没有指定为完整 URL 时,也可以使用 proxy-headers
选项来动态解析 URL。例如:
bin/kc.[sh|bat] start --hostname my.keycloak.org --proxy-headers xforwarded
在这种情况下,方案、端口和上下文路径从 X-ForwardedDebug 标头动态解析,而主机名则静态定义为 my.keycloak.org
。
7.5.3. 修复了 URL
即使 主机名设置为
完整的 URL,proxy-headers
仍然相关,因为标头用于决定请求的来源。例如:
bin/kc.[sh|bat] start --hostname https://my.keycloak.org --proxy-headers xforwarded
在这种情况下,虽然没有从 X-Forwarded github 标头动态解析,则使用 X-Forwarded fluentd 标头来确定请求的正确来源。