通过AWS Load Balancer自动调节应用程序访问权限

我正在为我计划从专用主机服务迁移到AWS的Web应用程序configurationtestingAWS架构。 我现在拥有如下:

  • 一个MySql RDS,我的应用程序数据在哪里。
  • 两个EC2实例。 此实例具有应用程序源代码(用PHP编写),并已configuration为连接到RDS。
  • 一个负载平衡器。 根据处理器的使用情况,我已经将其设置为在2到10个实例之间进行自动缩放,但是一旦应用程序启用,我很可能会调整这些策略。

新的EC2实例将通过自定义图像与代码和RDS连接参数一起启动,我正在圣保罗地区工作。

除了一件事以外,一切正常。 如果我通过ELB DNSlogging访问网站,那么我可以在那里看到该网站,但是我无法login。当我放置用户凭证时,没有任何反应。 (该网站基本上是一个pipe理面板,所以我必须login才能看到他们的内容),但是如果我通过一个单独的实例IP或DNSlogging访问,我可以login并正常使用应用程序。 用户数据(用户和密码)存储在RDS中。

如果有人经历过类似的事情,我真的很感激你的帮助。 先谢谢你!

维护会话的通常方式是:

  1. validation用户。
  2. 使用该会话的唯一ID将cookie发送到浏览器。
  3. 在浏览器的后续浏览中查找会话cookie。

会话cookie通常将从独立于Web服务器的位置存储和检索,例如独立的数据库服务器。 这样,不pipe他们打哪个Web服务器,他们都会得到相同的cookie和相同的会话。

会话cookie需要对客户端安全且唯一,所以一些应用程序将在计算中创build包含客户端IP的散列。 如果是这种情况,那么不同的IP就像是一个不同的会话。

你需要检查你的应用程序,看看是否是这种情况。

或者,如果实际需要将会话与特定服务器绑定(例如,应用程序在Web服务器上本地存储状态),则可以使用ELB粘滞会话将会话与特定的Web服务器绑定。 这应该只有当你的应用程序实际上在每个Web服务器上本地存储状态时才需要。

当您尝试通过ELB进行访问时,是否有任何访问日志或任何types的日志logging在您的应用程序? 如果不是这样,这更可能是ELB和EC2实例之间的IP转换问题。 可能是应用程序特定的,如; 你需要一个真正的客户端IP地址(如X-Forwarded-For头)? 也许,这是因为您在应用程序中使用的身份validation逻辑。