Apache 和 Nginx 组合在 Timeweb 中是如何实现的
对于很多公司来说,Nginx + Apache + PHP 是非常典型和常见的组合,Timeweb 也不例外。 然而,准确理解它是如何实现的可能是有趣且有用的。
当然,这种组合的使用取决于客户的需求。 Nginx 和 Apache 都扮演着特殊的角色,各自解决特定的问题。
基本设置 阿帕奇 在 Apache 本身的配置文件中执行,客户端站点的设置通过 .htaccess 文件。 .htaccess是一个配置文件,客户端可以在其中独立配置Web服务器的规则和行为。 此设置将专门应用于他的网站。 例如,借助Apache功能,用户可以在同一PHP版本内将运行模式从mod_php更改为mod_cgi; 您可以设置重定向、SEO 优化、方便的 URL、PHP 的一些限制。
Nginx的 用作代理服务器将流量重定向到 Apache,并用作 Web 服务器来提供静态内容。 我们还为 Nginx 开发了安全模块,使我们能够保护用户的数据,例如分离访问权限。
让我们假设用户访问我们客户的网站。 首先,用户访问 Nginx,它提供静态内容。 它立即发生。 然后,当需要加载 PHP 时,Nginx 将请求转发给 Apache。 Apache 与 PHP 一起已经可以生成动态内容。
Timeweb 中 Apache 和 Nginx 捆绑包的功能
我们的虚拟主机为 Apache 和 Nginx 实现了 2 个主要运行方案: 共享和专用.
共享方案
该方案适用于大多数用户。 它的特点是简单性和资源密集度:共享方案使用更少的资源,这就是其资费更便宜的原因。 根据这一方案,服务器运行一个 Nginx(可以为所有用户请求提供服务)和多个 Apache 实例。
共享方案长期以来一直在改进:我们逐渐纠正了缺点。 方便的是,无需修改源代码即可完成。
共享方案
专用方案
Dedicated需要更多资源,因此其资费对于客户来说更贵。 在专用方案中,每个客户端都有自己独立的 Apache。 这里的资源是为客户端保留的,它们是专门分配的。 工作原理:服务器上有多个版本的 PHP。 我们支持版本 5.3、5.4、5.6、7.1、7.2、7.3、7.4。 因此,每个版本的 PHP 都会启动其自己的 Apache。
专用方案
安全区。 在 Nginx 中设置区域
以前,对于 Nginx,我们使用了许多共享内存区域(区域)——每个域一个服务器块。 此设置需要大量资源,因为为每个站点创建了单独的区域。 然而,在Nginx设置中,大多数站点都是同一类型,因此由于在模块中使用了map指令,它们可以被放置在一个区域中 ngx_http_map_模块,它允许您指定对应关系。 例如,我们有一个区域模板,必须在其中提供变量:站点路径、PHP 版本、用户。 这样就加速了Nginx配置的重新读取,即重新加载。
这种配置极大地节省了RAM资源并加快了Nginx的速度。
重新加载就不行了!
在共享方案中,我们无需在更改网站设置时重新加载 Apache。 以前,当客户想要添加域名或更改 PHP 版本时,需要强制重新加载 Apache,这会导致响应延迟并对站点性能产生负面影响。
我们通过创建动态配置摆脱了重新加载。 谢谢
共享架构配置
那么 Docker 呢?
许多公司已经转向基于容器的系统。 Timeweb 目前正在考虑这种转变的可能性。 当然,每个决定都有利有弊。
除了不可否认的优势之外,容器系统还为用户提供了更少的资源。 在Timeweb中,由于所描述的托管方案,用户在RAM上没有限制。 它接收的资源比容器中的资源多。 此外,用户可能加载了更多的Apache模块。
Timeweb 为大约 500 个网站提供支持。 我们承担重大责任,不会对复杂的架构进行即时、不合理的更改。 Apache 和 Nginx 组合可靠且经过时间考验。 反过来,我们尝试通过独特的配置实现最大性能。
为了高质量、快速地运行大量站点,需要使用Apache和Nginx的模板和动态配置。 它允许您轻松快速地管理大量类似的服务器。
来源: habr.com