使用 PHP 和 Amazon AWS EC2 的会话
Posted
技术标签:
【中文标题】使用 PHP 和 Amazon AWS EC2 的会话【英文标题】:Sessions with PHP and Amazon AWS EC2 【发布时间】:2019-07-14 19:22:53 【问题描述】:我正在 AWS 上运行一个网站,其域名已在 Godaddy 上注册。 Godaddy 域 mydomainname.com 指向我的 AWS EC2 实例的 IP,该实例具有公共 DNS ec2-x-xx-xxx-xxx.compute-1.amazonaws.com。
我将 php 用于服务器端代码并遇到了会话问题。我在用户登录时设置了 $_SESSION 变量,但唯一的问题是,如果我在 mydomainname.com 登录,会话仅在此处设置,并且如果我在 ec2-x-xx-xxx-xxx.compute- 登录1.amazonaws.com,会话只设置在那里。当它们应该是相同的时,如何使会话在两个站点之间进行协调?
我是网络开发的初学者,所以请善待:)
【问题讨论】:
你不能。从安全角度来看,这是两个不同的网站。此外,您应该只使用您的域名 example.com 而不是 AWS dns 名称。 【参考方案1】:没有人应该使用ec2-x-xx-xxx-xxx.compute-1.amazonaws.com
。通过 DNS(使用 CNAME 或 Route53 的 ALIAS 记录)将 mydomainname.com
指向它,并让您的用户使用真实域名。
【讨论】:
【参考方案2】:这行不通。会话需要客户端浏览器上的 cookie,这些 cookie 随每个请求一起发送。这是服务器识别哪个会话与哪个传入请求相关的常用方式。
浏览器只会(几乎只是)将 cookie 发送回发出它们的域。这意味着当会话从“ec2-x-xx-xxx-xxx.compute-1.amazonaws.com”设置 cookie 时,浏览器不会将该 cookie 发送到“my-domain.com”或任何其他域。
此规则有一些例外和解决方法,单点登录是在域名之间传输某些状态信息的一个示例。
如果您担心用户使用多个域访问您的网站,那么一种解决方案是配置 Web 服务器,以将任何对备用主机的请求重定向到您希望在服务器上使用的主要主机名。
【讨论】:
以上是关于使用 PHP 和 Amazon AWS EC2 的会话的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ansible playbook 在 AWS (Amazon) ec2 中部署 Play Framework 应用程序