我有 LAMP 堆栈服务器(使用 apache2 的 vhost 配置)。我已经在这个服务器上运行了一个网站。现在我想在同一台服务器上托管另一个网站。
但是,第二个网站生成的 session_id 和 session 应该独立于第一个(现有)网站。事实上,我期望的是,两个网站都不应该知道并访问彼此的 session。
可以在单个 Apache 服务器上使用 PHP 实现此操作吗?如何实现此隔离?
答案1
我建议使用 Apache 的SUExec wrapper
和mod_fastcgi
(或 mod_fastcgid)。
mod_fastcgid 是一个动态工作池,它以特定用户的身份执行 PHP 解释器,而不是在 Web 浏览器的用户 ID 下执行。这样,您可以为每个网站创建不同的 unix 用户。
这不仅有助于区分每个网站,而且还限制了潜在入侵造成的损害,并且有助于提升每个网站的整体隐私感。
使用 fastcgid,每个站点可以拥有自己的 PHP.ini(例如,位于网站用户主目录中),并且在这个个性化配置中,您应该能够设置存储已保存会话的特定路径;
例如,如果您将此路径设置为/home/website1/tmp/
或/home/webiste2/tmp/
,则每个用户都将拥有自己的存储会话个人路径,并使用 unix 文件权限进行保护。
如果这是个人服务器并且所有网站都属于您,请考虑将会话缓存存储在 mysql DB 中。但这对于多宿主服务器来说不能很好地扩展。
祝你好运!