我提前道歉 - 我对 Nginx 非常陌生。
我有两个基于 VPC 的 AWS Elasticsearch 域,我们称之为 dev 和 prod。我希望这两个域都无法访问开放的 Internet,但在 VPC 之外的某些网络中可用。为此,我将它们设置为基于 VPC 的 Elasticsearch 域,并计划使用只能从我希望的网络访问的反向代理。我已经使用具有以下配置的 NGINX 反向代理设置了没有身份验证的开发集群:
events{
}
http{
server {
listen 80;
server_name kibana-dev.[domain name];
location / {
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_pass https://[vpc id].[vpc region].es.amazonaws.com/_plugin/kibana/;
proxy_redirect https://[vpc id].[vpc region].es.amazonaws.com/_plugin/kibana/ https://kibana-dev.[domain name]/;
}
location ~ (/app/kibana|/app/timelion|/bundles|/es_admin|/plugins|/api|/ui|/elasticsearch|/app/opendistro-alerting) {
proxy_pass https://[vpc id].[vpc region].es.amazonaws.com;
proxy_set_header Host $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-Forwarded-Host $http_host;
}
}
}
这工作正常。
但是,对于 prod 域,我遇到了问题。我希望所有用户,即使是那些使用代理的用户,都必须使用 AWS Cognito 进行身份验证(所以我不只是想,例如,为代理的 IP 地址创建一个带有 IP 例外的访问策略,因为它绕过了 Cognito )。
我为我的“prod”Elasticsearch 实例使用了类似的 NGINX 配置,但没有运气。Cognito 登录页面在身份验证后重定向到基于 VPC 的 URL。我尝试手动将代理的 URL 添加到 Cognito 应用程序的回调 URL,但默认情况下它仍重定向到基于 VPC 的 URL。我还尝试手动更改 Cognito URL 中的重定向 URI 以引用我的代理,但我发现在身份验证后我再次被重定向到 Cognito 登录页面 - 可能是标题或其他内容没有通过?
我如何(或可以)让它在 Nginx 中运行,以便用户可以访问“prod”Elasticsearch 域,同时仍需要使用 AWS Cognito 进行身份验证?
谢谢!