每个网站都声明自己的运行环境,并只获得它所需要的
网站运行环境决定了由什么来响应请求:磁盘上的文件、PHP、Node.js 应用、容器,或一个转发到别处的名称。Dashmox 在您创建网站时询问,并只提供您所选的那一种,不多不少。
这五种
一个网站可以是什么。
在创建网站时选择,之后可以更改,无需重建任何内容。
静态文件
网站直接提供您上传的内容,服务器上不运行任何程序。没有需要维持运行的东西、没有需要更新的东西、也没有可被入侵的东西。
PHP
唯一自带数据库、一键安装器和扩展选项的运行环境。WordPress、Joomla、Laravel,以及其他任何用 PHP 写的东西。PHP 托管
Node.js 应用
您自己的程序,由服务器启动、监管和重启,前面有您的证书。Node.js 托管
容器
一个管理员已批准的镜像,以无特权方式运行,且根文件系统为只读。Docker 托管
转发到别处
该名称在此响应,而每个请求都转交给您指定的地址。仅管理员可操作。反向代理
为什么要问这个
因为一台靠猜的服务器会做多余的事。
通常的安排是:每个网站都是 PHP 网站,无论它是否曾包含过一行 PHP。
那是一个合理的默认设置,也是一个昂贵的设置。对一个由三百个 HTML 文件组成的站点来说,那些 PHP 进程仍然存在。在一个根本没有 PHP 文件的网站上,解释器仍可通过任何以 .php 结尾的路径访问到。设置页面仍为一个并不运行的东西提供版本和扩展选项。在您配置它的那天,这些都没造成危害,而它们全都是无人注意的攻击面。
声明网站运行什么,让这件事反过来了。这个问题只问一次,就在您为站点命名的那个表单里,而后续的一切都由这个答案决定。
- 静态网站完全没有 PHP 服务。不是被禁用的服务:它没有进程池、没有套接字,配置中也没有写入任何
.php处理规则。背后只有一行try_files,用于提供文件或返回 404。 - 每个 PHP 网站都有独立的进程池,以该网站的 Linux 账户身份运行,通过各自独立的套接字访问。其 PHP 版本和整个
php.ini都归它自己所有,为某个高需求应用提高限额只会影响该应用。 - 应用运行环境由系统托管,而非指望它自己不出问题。Node.js 应用或容器由服务器启动,退出后自动重启,重启机器后也会再次启动。一切都不依赖于某人是否留着一个终端窗口。
- 面板提供正确的页面并隐藏不适用的页面。安装器和扩展页面属于 PHP 网站。从 PHP 改为其他类型的网站只会失去这两个页面,其余一切照旧:文件、域名、证书、邮件和备份都保留。
- 限制在运行环境所在之处强制执行。CPU、内存和进程限制作用于实际运行的那个对象,因此繁忙的网站是被约束的,而不是吵闹的。
其结果是:一个网站的攻击面,就是它所做之事的攻击面。Dashmox 服务器上的一个静态营销站点就是一个目录加一个 Web 服务器,而 PHP 那条长长的漏洞尾巴对它来说是不可能发生的事,因为解释器从未被放在它前面。
改变主意
运行环境是一项设置,而不是一次重建。
打开网站、选择另一种运行环境、按下应用运行环境。它仍是同一个网站,只是背后换了引擎:域名保留、证书保留、文件原地不动、邮箱不受影响、备份依然可恢复。
这一点比听起来更重要,因为另一种做法才是人们实际会做的:新建第二个网站、把一切复制进去、迁移域名、重新签发证书,并希望自己没有忘记 DNS。一个可以更改的设置,是您在应用发生变化时真的会去改的设置;一个无法更改的设置,则成了把静态站点永远留在 PHP 上的理由。
有一条规则:网站必须已完成创建且状态正常,才能更改其运行环境。仍在创建中或处于错误状态的站点会被要求先稳定下来,因为在一个半成品网站下面更换运行的东西,结果会是一个两头都不是的网站。