我在一家小型科技初创公司工作,我们有一个使用Microsoft Identity Server的微服务.NET应用程序,托管在运行在Windows服务器上的AWS Elastic Beanstalk中。我们希望将我们的服务器迁移到AWS Linux 2,并成功部署了一个运行在AWS Linux 2上的API服务,没有任何问题。
我现在正试图让我们的一个前端Web服务器部署到一个新的AWS Linux 2 Elastic Beanstalk应用程序,但遇到了一些问题。
我们使用在AWS中运行的Microsoft Identity Server(目前在Windows服务器上)。通过查看日志和阅读大量网站,我发现,由于nginx代理服务器在登录请求击中我们的Identity Server时的工作方式,它不再来自https。这使我发现了这篇文章:https://serverfault.com/questions/917511/nginx-proxy-to-aws-elb-not-passing-https-protocol-to-backend-instances。看起来解决方案与将这行添加到nginx.conf有关:
proxy_set_header X-Forwarded-Ssl on;
我们没有手动安装或配置nginx,而是在Elastic Beanstalk配置中选择此选项作为代理服务器。AWS Console Proxy Server Image
这篇AWS文档文章给出了在源代码中放置配置文件的说明,以便部署添加或我们自己的nginx.conf,但没有给出文件应该是什么样子或需要是什么样子的示例,因为我不确定添加导入到基础Elastic Beanstalk nginx.conf的位置:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html
我在这篇文章中看到(在我们需要使用的运行HTTPS的应用程序中,重定向URI作为HTTP而不是HTTPS发送
ForwardedHeadersOptions forwardedHeadersOptions = new ForwardedHeadersOptions()
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
forwardedHeadersOptions.KnownNetworks.Clear();
forwardedHeadersOptions.KnownProxies.Clear();
app.UseForwardedHeaders(forwardedHeadersOptions);
然而,我不确定在这一点上如何正确地配置nginx在conf中将HTTP重定向到HTTPS,以及在我们的源代码中这个配置需要驻留在什么级别。
我试过把这个文件
location / {
proxy_set_header X-Forwarded-Proto $scheme;
}
在我的源代码中:/.platform/nginx/config.d/https.conf
但这一直不成功。任何人能给予的任何帮助都是非常感激的!
1条答案
按热度按时间j0pj023g1#
这是一个常见的情况,你会想修改你的nginx配置的任何类型的变化。你所遵循的方法,即使它通过手动推送文件的工作原理。但当自动缩放发生时,或者更糟的是,当节点因任何xyz原因失败时,这个状态不能由beanstalk维护,因为它不知道配置,然后它会丢失。
我们过去使用的是. ebextensions。在这里你维护beanstalk理解并读取的配置。你可以用它做各种各样的更改。这样beanstalk每次都会记住要维护的状态
文档在这里,但没有很好的例子-https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
一个re:文章也在那里-https://repost.aws/knowledge-center/elastic-beanstalk-configuration-files
您可以参考这篇文章以方便参考。https://medium.com/swlh/using-ebextensions-to-extend-nginx-default-configuration-in-aws-elastic-beanstalk-189b844ab6ad