跳转至

站点管理(site 命令)

网站管理

“Site”命令允许您管理服务器上托管的网站。

在您的新服务器上创建任何类型的网站,并添加 SSL 证书,为您的 WordPress 安装激活 FastCGI 缓存以及更多功能,让您能够轻松可靠地全面控制您的网站。只需一条命令即可完成,相当简单。

命令格式:

sudo site <域名> <选项> <选项2>

选项:

  • -cache
  • -clone-from
  • -delete
  • -delete-all
  • -empty
  • -force-redirect
  • -forward
  • -html
  • -info
  • -list
  • -multisite-convert
  • -mysql
  • -on
  • -off
  • -parked
  • -php
  • -proxy
  • -redirection
  • -ssl
  • -wp

示例:

# 创建 PHP 站点
sudo site example.com -php

# 创建启用缓存的 WordPress 站点
sudo site example.com -wp -cache=on

# 关闭缓存
sudo site example.com -cache=off

# SSL 证书
sudo site example.com -ssl=on

# 列出您的站点
sudo site -list

# 复制 WordPress 站点
sudo site example.com -clone-from=staging.example.com

# 重定向
sudo site example.com -redirection

创建新站点

创建任何类型的网站:HTML、PHP、WordPress、反向代理等。


要创建一个基本的 HTML 网站,请使用以下命令:

sudo site example.com -html

创建一个支持 PHP 的网站:

sudo site example.com -php

所有使用主域名(非子域)的网站均配置为响应来自 example.comwww.example.com 的请求。 详见 强制重定向选项

此外,在创建 PHP 网站时,您应该考虑到 Webinoly 使用的是以下 Nginx 配置:
try_files $uri $uri/ /index.php$is_args$args;
这意味着所有请求都依赖于您的索引文件, 404 错误代码也需要在 PHP 代码中进行处理。

要创建与数据库结合使用的 PHP 网站:

sudo site example.com -mysql

执行命令后,将显示连接数据库所需的数据信息。

您还可使用 "custom" 选项在生成数据库之前输入自己的数据,例如 sudo site example.com -mysql=custom,或直接传递参数。

# 小技巧
# 使用不带域名的 -mysql 选项创建数据库和用户(MySQL)
sudo site -mysql

# 自定义数据 - 选项
sudo site example.com -mysql=custom

# 自定义数据 - 参数
sudo site -mysql=[host,dbname,dbuser,password]
sudo site example.com -mysql=[host,dbname,dbuser,password,external_dbuser,external_dbpass]

# 小提示
# 填入密码时使用 random 参数,即可自动生成随机密码。

此外,FastCGI 缓存支持任何 PHP 网站,这样可以减少与 php-fpm 进程相关的负载和 CPU 使用率。

WordPress

安装 WordPress 从未如↗此↘简↓单↑ !(so easy!)
Webinoly 会自动配置整个安装过程,包括下载WP程序本体。

sudo site example.com -wp

嗯呐!就这么简单

自定义 WordPress 安装

当然,您可以根据自己的需求在创建网站时,进行任何客制化/自定义选项。

使用 “自定义 ”选项可修改数据库的某些方面,任何时候您只需在每个问题中按下回车键,即可使用建议的数据。

# 使用 custom 参数自定义配置 WordPress 站点安装脚本
sudo site example.com -wp=custom -cache=on

同样,您也可以直接从命令行传递数据。

# 基于自定义数据配置 WordPress 安装脚本
sudo site example.com -wp=[<setup_db>,<setup_wp>,<host>,<dbname>,<dbuser>,<dbpass>,<wp_prefix>,<external_db_user>,<external_db_pass>]

# 示例:
sudo site example.com -wp=[true,true,localhost,example_com,example_user,password,wp_]

# 小提示
# 填入密码时使用 random 参数,即可自动生成随机密码。

您还可以修改为每个创建的站点分配的数据库用户权限:

sudo site example.com -wp -db-role=extra

请参阅 默认数据库权限 了解更多

Webinoly 会自动创建 WordPress 配置文件 wp-config.php,并将其保存在htdocs公开目录上一级的目录中 (example.com/htdocs/) ,从而增强安全性:/var/www/example.com/wp-config.php

除非 在子目录安装 WordPress ,若出于某种原因,您复制或移动了此文件,或者您在 htdocs 目录中创建了自己的文件,请删除或重命名旧文件,以防止 Webinoly 将其视为重复文件出现意外行为。

远程 / 外部数据库

#externaldb

Webinoly 支持使用外部数据库,例如 Amazon RDS 或其他任何数据库 (事实上,您还可以实现 通过 Webinoly 配置外部数据库服务器)。

# 示例
sudo example.com -wp=custom

# 您会被要求提供一些连接信息
Database Host [localhost]: myinstance.123456789012.us-east-1.rds.amazonaws.com:3306

甚至可以将外部数据库的连接信息保存在 Webinoly 配置文件 中, 这样 Webinoly 就会始终默认使用这些数据(就像使用本地主机一样)。

* 需要注意的是,url 开头不应包含协议 (http/https),并且还应考虑到,此类解决方案的架构设计实施不当,或将会对网站速度产生负面影响,导致出现高延迟现象、甚至多次连接错误和超时。

** 这已成功通过Amazon RDS 使用 MySQL、MariaDB 和 Amazon Aurora 作为数据库引擎的测试。

*** 所有外部数据库凭据都按照官方建议存储在 MySQL CNF 文件中,这样 Webinoly 就不需要每次都询问这些凭据。某些 Webinoly 选项支持 -external-db=[user,pass] 参数,您应该知道此参数具有更高的优先级,因此可以在支持的情况下使用它来重写/更新这些凭据。

WordPress 多站点网络(Multisite)

将 WordPress 网站转换为多站点从未如此简单:

sudo site example.com -multisite-convert

此时需要前往WordPress的后台找到侧边栏 “工具 > 配置网络” ,并找到「您在站点网络中的站点地址」小节,选择「子域名」还是「子目录」。

一旦您选择了所需的多站点类型,Webinoly 将自动完成所有配置。

* 如果您的网站是使用 -subfolder 也就是子目录选项安装的,那么在转换为多站点模式时,也只能选择「子目录」的选项,WordPress 不允许在子目录安装中使用「子域名」配置多站点。

替换内容

替换内容选项可单独用于任何其他 WordPress 网站,以搜索和替换内容中的任何词汇或字符串。

sudo site example.com -replace-content

然后,系统会要求您输入搜索/替换词,您也可以使用下面的示例跳过询问交互。

# 跳过交互询问
# 注意,使用该选项时有一些限制,如不允许使用空格或引号。

sudo site example.com -replace-content=[search-this,replace-with]

如果您的 WP 站点(用于克隆或替换内容)连接到外部数据库,则需输入用户名和密码。
要跳过交互询问,可以使用-external-db=[user,pass]选项。

WordPress 环境变量类型

#environ

在 WordPress 中设置 WP_ENVIRONMENT_TYPE变量:

  • production 生产
  • staging 测试
  • development 开发
  • local 本地
sudo site example.com -env=staging

测试、开发和本地环境下,FastCGI 缓存将自动禁用。
此外,WordPress 的 “设置 > 阅读” 页面中的「建议搜索引擎不索引本站点」选项也将自动启用。

开发、本地环境下,WordPress 的调试模式将自动启用。
当切换到测试或生产环境时,该模式将被禁用。

# 示例:

# 保持缓存开启:
sudo site example.com -env=staging -cache=on

# 创建新的WP开发站点
sudo site example.com -env=development -wp

# 新的克隆网站将被设置为「测试环境」
sudo site example.com -env=staging -clone-from=sub.example.com -overwrite=on

配置子目录

在服务器上配置网站的有力特点之一,就是能够独立配置特定网站的每个子目录。

sudo site example.com -html -subfolder=/one
sudo site example.com -php -subfolder=/two
sudo site example.com -wp -subfolder=/three
sudo site example.com -proxy -subfolder=/four

# 删除子目录网站
sudo site example.com -delete -subfolder=/xxx

在域名的根目录下,甚至可以不设置网站,也就是说,
您可以仅在子目录中配置所需要的特定功能(WP、PHP、反代),并根据需要任意搭配。

# 包含子目录、且根目录为空的示例
+ example.com <empty> 
  - /blog <wp>
  - /downloads <proxy>
  - /tickets <php>

# 另一个根目录下的静态站点示例
+ example.com <html>
  - /news <wp>
  - /clients <php>

* 注意:使用此方法安装在子目录下的所有网站,都将拥有独立的配置文件(包括下文所述的WordPress子目录安装),其中大多数文件都可以在 /etc/nginx/apps.d 目录中找到。 ** 这意味着主域名某些设置的更改不会影响这些子目录。

子目录安装 WordPress

#subfolder

您可以在同一域名下,安装多个 WordPress。

sudo site example.com -wp -subfolder=/test

管理操作时,您应始终指定 -subfolder 参数引用特定目录,
从而区分主域名根目录下,普通方式安装的WordPress。

sudo site example.com -delete -subfolder=/test
sudo site example.com -cache=on -subfolder=/test
sudo site example.com -multisite-convert -subfolder=/test
sudo site example.com -clone-from=dev.example.com -subfolder=/test
sudo site example.com -replace-content -subfolder=/test
sudo site example.com -env=staging -subfolder=/test
sudo site example.com -info -subfolder=/test
sudo webinoly -backup=local -export=example.com -subfolder=/test
sudo webinoly -backup=local -wp=example.com -subfolder=/test
sudo webinoly -backup=s3 -add-db-pre=example.com -subfolder=/test
sudo webinoly -clear-cache=example.com -subfolder=/test
sudo httpauth example.com -wp-admin=on -subfolder=/test
sudo httpauth example.com -path=/test/folder/ -subfolder=/test
sudo log example.com -wp=on -subfolder=/test

停放域名或别名

停放域名是指向主网站的附加或备用域名。这是一种从不同域名访问站点的简易方式。

sudo site example.com -parked

执行该命令时,系统会要求您输入新停放域所指向的主域名称。
同样您也可以使用以下命令简单地指定:

sudo site example.com -parked=mainsite.com

确保主网站也托管在同一服务器上。

WordPress 域名自动映射

如果您正在创建一个停放的网站,并且您的主网站是 WordPress 多站点,那么如果您愿意,我们可以自动完成域名映射过程,您只需提供子站点的“WP 博客 ID”即可。

sudo site example.com -parked=mainsite.com -domain-mapping-wp-id=3

或者您可以按照 WordPress 官方文档中描述的 域名映射步骤 手动进行操作。

域名转发

所有对该域名的请求都将被重定向或转发到另一个域名。

sudo site example.com -forward=example.org

所有请求参数都会传递到新域名。
如果您想移除这些参数、并强制重定向到单个站点的根目录下,可以使用 root=on 选项。

# example.com/news  -->  example.org/news
sudo site example.com -forward=https://example.org

# example.com/news  -->  example.org
sudo site example.com -forward=https://example.org -root=on

反向代理网站

反向代理服务器是一种代理服务器(简称反代),可将客户请求导向适当的后端服务器。

在 Nginx 中使用反代配置创建网站:

sudo site example.com -proxy=[localhost:8080]
# 示例:
sudo site example.com -proxy=[127.0.0.1:8080]
sudo site example.com -proxy=[https://example.com]
sudo site example.com -proxy=[http://example.com:8080]

# 您可在 3000 端口运行 Node.js 应用程序
sudo site example.com -proxy=[localhost:3000]

# 您可在 8082 端口运行 Java 应用程序
sudo site example.com -proxy=[localhost:8082]

# 您可在 8080 端口运行 Vue 应用程序
sudo site example.com -proxy=[localhost:8080]

# 您可使用 Django 和 Gunicorn 运行一个 Python 应用程序
sudo site example.com -proxy=[localhost:8000]
# 若您使用 Gunicorn 的套接字/Socket接口
sudo site example.com -proxy=[http://unix:/home/<user>/<project_name>/<project_name>.sock]

# Ghost 博客
sudo site example.com -proxy=[localhost:2368]

* 如上例所示,由于 Nginx 的限制不允许使用 URI, 因此像http://localhost:8000/uri/ 或者 http://unix:/tmp/backend.socket:/uri/这样的URI 不允许用于上游服务器配置,而且我们的反向代理配置包含一些使用正则表达式指定的 location 块。

针对只能支持 URI 部分的情况,我们创建了一个特殊方案,请阅读下文“简易专用反向代理”部分。

** 反向代理站点的 Nginx 配置可以安全地使用您的自定义规则进行修改,请参阅 Nginx 部分

与其他网站一样,反向代理网站也受到一些基本规则和标头保护,默认情况下会屏蔽某些隐藏文件以及特定名称和扩展名的文件访问权限。这对于将网站部署在反向代理后面来说非常有用,但在某些其他情况下可能并非预期行为。
因此,我们创建了「独立反向代理」服务,您可以在下方查看详细信息。

独立反向代理

与之前的反代配置不同,该配置是完全透明的, 这在某些情况下(例如对象存储)可能是最理想的配置。

sudo site example.com -proxy=[https://repo.example.org] -dedicated-reverse-proxy

当您创建一个「独立反代(-dedicated-reverse-proxy)」站点时,该域名下的子目录中只允许创建「独立反代」站点,同时,这些独立站点也不允许出现在任何其他类型现有站点的子目录中。

切勿将「独立反代」用于网站用途: 这样做会导致大量不安全的文件暴露在互联网上,并且一些HTTP标头也会被移除。除非您清楚自己在做什么,否则独立反向代理只能用于文件存储库,例如S3或类似的对象存储服务。

# 示例:位于反向代理后面的 S3 文件存储库
sudo site example.com -proxy=[https://s3.bucket1.aws.com] -dedicated-reverse-proxy

# 添加 SSL 证书
sudo site example.com -ssl=on -manual=http

# 在子目录中添加第二个存储桶
sudo site example.com -proxy=[https://s3.bucket2.aws.com] -dedicated-reverse-proxy -subfolder=/images

另一个基于Web端App的例子:

# 示例:运行在 localhost 本地主机的 Web App
sudo site example.com -proxy=[localhost:8082]

# 添加 SSL 证书
sudo site example.com -ssl=on -root-path=/opt/app/web

# 在这种情况下,您可以在子目录中放置任何其他类型的网站
sudo site example.com -wp -subfolder=/blog

此外,任何反代站点都支持调用 FastCGI 缓存,这样可以减少源服务器(上游服务器)的负载和请求。

简易独立反向代理是我们创建的一种特殊情况,它存在一些限制,但可以支持后端路径中的 URI 部分,例如 https://s3.bucket1.aws.com/uri-path/。只需使用 -dedicated-reverse-proxy=simple 选项即可。此配置不使用 Nginx Upstream 块,而是直接将后端地址传递给 proxy_pass 指令。

完全客制化/自定义站点

如果您想从头开始构建空白的 Nginx 静态网站配置,这是一个完美的方案。

sudo site example.com -empty

现在,您可以使用 自定义配置文件 来添加所有您自己的 Nginx 代码。

# 示例:
sudo site example.com -empty

# 您自定义的 Nginx 配置
sudo nano /var/www/example.com/custom-nginx.conf

# 基础配置位于 /var/www/example.com/custom-nginx.conf
location / {
    try_files $uri $uri/ =404;
}

新建网站与其他网站一样拥有独立的服务器配置块。
​​根据您的需求,您需要在自定义配置中至少包含一个 location / 配置块,如上例所示。

与其他网站一样,默认情况下会包含一些基础配置项(位于 locations.conf 文件中)。使用 -empty=blank 选项可以禁用所有这些默认设置,同时也会移除一些 HTTP 标头。


管理工具

实用的网站管理命令


克隆站点

现在,你可以克隆任何类型的网站,而不仅仅是 WordPress。

由于此功能在开发阶段非常有用,因此也被称为“预发布站点”。

sudo site example.com -clone-from=dev.example.com

如果存在以下任何功能,它们都不会被克隆到新站点:SSL证书、强制重定向、默认站点或工具站点设置,以及任何自定义Nginx文件。

对于 WordPress 网站,您应该考虑以下几点:

  • 您内容中的所有链接都将自动更新,您可以使用 -replace-content=off 参数禁用此功能。
  • 请注意,WordPress 多站点网络无法克隆,因为网络中的每个站点都像一个独立的站点,目前没有切实可行的方法可以克隆整个网络。如果您只想克隆多站点网络中的某个站点,可以使用免费的 WordPress 插件。
  • 此外,您还可以使用 -env=staging 参数设置或更改克隆站点的 WordPress 环境类型

要克隆并覆盖现有网站,可以使用 -overwrite=on 参数。

示例:开发过程

# 创建一个新的开发网站
# 启用 WP 调试模式,禁用缓存和搜索引擎 noindex
sudo site dev.example.com -wp -env=development

# 等待客户批准的预发布测试网站
# 禁用调试模式、禁用缓存和 noindex
sudo site staging.example.com -env=staging -clone-from=dev.example.com

# 覆盖生产中的旧网站
# 启用缓存,禁用调试,启用索引
sudo site example.com -clone-from=staging.example.com -cache=on -env=production -overwrite=on

# 在本地环境中更新
sudo site local.example.com -env=local -clone-from=example.com

# 将更新推送至生产环境
sudo site example.com -clone-from=local.example.com -cache=on -env=production -overwrite=on

暂时禁用站点

您可以随时激活或停用托管在您服务器上的网站,而无需将其删除。

sudo site example.com -on
sudo site example.com -off

删除网站

您应谨慎使用该选项,因为一旦删除网站,就无法恢复文件。

sudo site example.com -delete

您还可以使用“force”参数跳过询问交互(无人值守模式),例如:sudo site example.com -delete=force

# 不要清除数据库数据
sudo site example.com -delete=keep-db

# 无人值守执行删除外部数据库(无人值守脚本)
sudo site example.com -delete=force -external-db=[user,pass]

# 吊销 SSL 证书
sudo site example.com -delete=force -revoke=on

要删除服务器上托管的所有网站:

sudo site -delete-all

您目前使用的 WordPress 网站的数据库也将被删除。
但某些其他数据库可能不会被删除,因此可能仍会残留一些已删除的网站的数据。

# 扩展示例
sudo site -delete-all=force -external-db=[user,pass] -revoke=force

# 保留数据库
sudo site -delete-all=keep-db

删除站点时,如果检测到外部数据库,系统将尝试使用 -external-db 参数指定的数据;
如果找不到这些数据,系统将提示用户输入必要的信息。-revoke=on 参数将删除并撤销站点的 SSL 证书(如果存在),使用“off”选项则可以保留 SSL 证书。

当站点被设置为default-site “默认站点”或 tools-site“工具站点” 时,无法删除。
如果使用 force-delete-all 选项,则会强制删除这些站点,并且每个选项都会被设置为“默认值”以防止出错。

此外,请注意,如果您使用命令 sudo site example.com -subfolder=/test -delete 删除子目录,则该子目录内的所有子目录也会被一并删除。

网站信息

显示有关您的网站的信息列表。

sudo site example.com -info

* 使用外部数据库的 WordPress 网站需要您的访问凭据才能显示完整信息。您可以使用 -external-db=[user,pass] 参数,或者将您的数据保存在 Webinoly 配置文件 中。

列出您的网站

要查看服务器上托管的所有网站列表,请使用以下命令:

sudo site -list

您还将看到每个站点的一些信息:

  • Site Type: WordPress, HTML, PHP, Parked, Proxy, Forward, Subfolders.
  • Assignation: 默认的 Default 站点、或用于访问 Webinoly 的工具页。
  • Alerts: NoSSL, SSL-Staging, AccessLog, NoCache, NoAdminAuth, Debug.
# 过滤
sudo site -list=nossl

筛选选项: disabled, main, html, php, wordpress, parked, proxy, forward, tools, default, ssl, nossl, sslstaging, accesslog, noaccesslog, cache, nocache, adminauth, noadminauth, debug, nodebug, wpenv.

当 WP 环境类型不是“生产环境”时,站点类型将显示为:(WordPress:staging),例如。您可以使用“wpenv”来筛选这些站点。


设置和自定义

根据您的需求配置您的网站。


强制网站使用 WWW 或非 WWW 前缀

#force

默认情况下,Webinoly 会将您的网站配置为接受您域名下的两种请求,
也就是说,当使用主域名/根域名(例如 example.com)时,example.comwww.example.com 都将有效(但不适用于子域名:sub.example.com)。

您可以强制使用并重定向请求到您指定的任何位置。

sudo site example.com -force-redirect=<options>

选项:

  • www
  • root
  • off

在某些特殊情况下,如果 SSL 证书是从其他提供商导入的,并且该证书不包含“www”域名(或反之),我们可以使用 -ignore-ssl 选项,如下所示:sudo site example.com -force-redirect=root -ignore-ssl

Nginx FastCGI 缓存

#cache

几乎是优化任何网站的最简单、最强大的工具:

  • FastCGI Cache for WordPress
  • Custom Nginx Cache (any site)

FastCGI 缓存 for WordPress

预配置的适用于 WordPress 的 Nginx FastCGI 缓存。

结合 Nginx 使用,这是优化 WordPress 网站速度的最佳方法。忘掉那些过时的插件吧,比如 W3 Total Cache、Super Cache 或 WP Rocket。FastCGI 的性能远超从服务器缓存中提供内容的速度。

启用或禁用 FastCGI :

sudo site example.com -cache=on

您也可以在创建新网站时激活此功能,具体操作如下:

sudo site example.com -wp -cache=on

您可以使用 -wp-cache-plugins(on/off)参数来跳过建议插件安装的提示:sudo site example.com -cache=on -wp-cache-plugins=on

[! ] Nginx Helper 插件

强烈建议使用 Nginx Helper 插件 自动执行动态更新和清除缓存内容;这样可以确保在需要时始终显示最新的内容。

务必将插件的清除方式配置为“删除本地服务器缓存文件”,因为 清除/URL 方式存在安全风险,因此已禁用其支持。同样,缓存方式也应设置为“Nginx FastCgi 缓存”。

要修改 WordPress FastCGI 缓存的全局配置:

自定义 Nginx 缓存

功能强大的 Nginx 缓存可支持任何类型的网站,而不仅仅是 WordPress。

  • 支持的站点类型:PHP、WordPress 和反向代理。
  • 每个站点都可以独立配置缓存。
sudo site example.com -cache=custom

当首次在网站上启用自定义缓存时,它将使用当前的全局配置。 之后,您可以使用全局 FastCGI 缓存部分中描述的相同参数来配置您的网站缓存, 这些参数将仅应用于此特定网站的配置。

# 示例

# 启用自定义缓存
sudo site example.com -cache=custom

# 自定义设置
# 可用的相同选项:-delete, -list, -regex 等.
sudo site example.com -cache=custom -cache-valid
sudo site example.com -cache=custom -query-string-cache=one
sudo site example.com -cache=custom -query-string-never-cache=two
sudo site example.com -cache=custom -query-string-cache-default=never
sudo site example.com -cache=custom -skip-cache=/page
sudo site example.com -cache=custom -skip-cookie-cache=app_logged_in

* 这些规则的输入顺序可能会影响最终结果。请阅读缓存规则优先级部分。 ** 此外,您还可以手动输入自定义的 Nginx 规则来实现自定义缓存。请阅读 Nginx 配置部分 以了解如何修改这些文件。

另一方面,如您在上面看到的,我们还支持 -query-string-cache-default(all/never)选项,这定义了查询字符串的默认缓存行为。一般情况下,单个规则的优先级高于此默认规则。

亦可以禁用自定义缓存,但保存所有自定义设置,在下次重新启用时可用。

# 禁用自定义缓存
sudo site example.com -cache=off

# 若您希望彻底删除并重置已保存的缓存与设置
sudo site example.com -cache=off -reset
sudo site example.com -cache=custom -reset

当在子目录站点(使用 -subfolder=/test 选项创建的站点)中使用自定义缓存时, 请注意到只有该子目录会被缓存,而不是整个域名。 举例来说 sudo webinoly -clear-cache=example.com -subfolder=/test 命令只会对该子目录生效。每个站点都是独立且隔离的,即便它配置在另一个域名下的子目录站点。

也要注意,在WordPress网站中使用自定义缓存时,它不会预先配置好供WordPress使用,您需要从头开始进行配置。

默认情况下,使用自定义缓存时,所有请求的页面都会被缓存,因此针对每种情况进行合适的配置非常重要。例如说,如果我们想要重新创建用于 WordPress 缓存的配置,配置如下:

#wpcachesettings
# 针对 WordPress 的缓存设置
# 这与我们在 WordPress 预配置选项中使用的配置相同

sudo site example.com -cache=custom -query-string-cache-default=never

sudo site example.com -cache=custom -skip-cache='"(/wp-admin/|/xmlrpc.php|wp-.*.php|index.php|/feed/|.*sitemap.*\.xml|/feed/|/account/|/add_to_cart/|/cart/|/my-account/|/checkout/|/logout/)"' -regex=insensitive

sudo site example.com -cache=custom -skip-cookie-cache='"comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|[a-z0-9]+_items_in_cart|[a-z0-9]+_cart_hash"' -regex=insensitive

我们默认情况下不会这样做,但在某些情况下,根据您使用 WordPress REST API 的方式,您可能需要包括 /wp-json/ 来跳过缓存。

基本来说,设置自定义缓存就是为了防止某些特定页面被缓存,例如已登录用户的页面、sitemaps站点地图、购物车和结算页面等等。 就这么简单!

同样,您也可以根据您的项目创建自己的自定义规则。

你敢相信自定义配置可如此简单吗?无论您的应用或网站是用 Laravel、Java、Node、Angular、React、Vue 或任何其他编程语言或框架开发的,甚至是使用像 Drupal 或 Joomla 这样的CMS(内容管理系统),都可以轻松实现自定义配置。

Let’s Encrypt SSL 证书认证

我们利用 Let’s Encrypt 提供的服务,为您的网站生成免费证书,让您能够更轻松、快捷地配置您的网站。

没有理由不在您的网站实现 HTTPS 协议,只需执行以下命令,您的新网站即可完全配置为通过 HTTPS 协议安全地访问。

sudo site example.com -ssl=on

***一旦激活 SSL 证书,Webinoly 将自动修改 Nginx 配置,从而将您网站的所有流量从 HTTP 重定向到 HTTPS 协议。

创建证书时,Webinoly 会要求您提供电子邮件地址,该电子邮件地址将用于注册新证书,并帮助您跟踪证书的定期续订过程。

若您希望,还可以保存您的电子邮件地址:sudo webinoly [email protected],这样在申请证书时就可以跳过交互询问。

* 在现有服务器上,此命令将更新 Let's Encrypt 中注册的电子邮件地址,同时也会更新 root 用户 cron 任务中的 MAILTO 设置。 ** 发送至 Ubuntu 系统内部 root 用户的各种电子邮件,将转发到此电子邮件地址。

Let's Encrypt 颁发的证书有效期为 90 天,但不用担心,续订过程是自动的。Ubuntu 系统会创建一个计时器,每天检查需要续订的证书(有效期少于 30 天),此外,为了确保万无一失,Webinoly 也会每周自动检查所有网站证书的状态。

在每周的续订检查期间,您将收到一封电子邮件,发送到您注册的账户,邮件中会显示每份证书的当前状态。

* “必须装订”(Must-Staple)选项现在默认已禁用,可以使用 -must-staple=on 参数启用此选项。

关闭站点 SSL

出于某些原因需要禁用网站 SSL 证书时,只需执行以下命令:

sudo site example.com -ssl=off
# 使用“revoke=(on/off/force)”选项可以跳过询问交互。(无人值守模式)
sudo site example.com -ssl=off -revoke=on

如果吊销证书失败(例如,如果您尝试吊销已过期的证书),系统会询问您是否要删除该证书。 此时,您可以使用 -revoke=force 选项自动执行操作。

即使您的网站已不存在,也可以使用 -ssl=off 选项来删除和吊销孤立的 SSL 证书。

停放站证书

“-root” 选项允许您为文件根目录位于非标准位置的网站创建证书;这种情况常见于停放站,因为域名用于停放站的情况下,甚至没有根目录或相关文件,但它指向托管在同一服务器上的另一个网站。

sudo site example.com -ssl=on -root=mainsite.com

上述情况中,比较常见且实际的案例是 使用多域名模式的 WordPress 多站点网络(MU),其中您的服务器上要有一个或多个停放/映射域名指向主站。 这时请先完成域名映射过程,然后再申请证书。

反代站点上的证书

“-root-path”选项允许我们指定不同的路径,例如在反向代理配置的网站中,其文件存储在与/var/www不同的位置。

sudo site example.com -ssl=on -root-path=/opt/myapp/web

这仅适用于托管在同一服务器(localhost)上的应用程序, 对于外部服务,您应该使用下面描述的手动验证。

手动验证

如果您想为某个服务或网站获取证书, 但由于某些原因该服务或网站无法从外部直接访问,则可以使用手动验证方法。

sudo site example.com -ssl=on -manual=http

手动方法支持“http”和“dns”验证。

“http” 验证会要求您在您的网站上放置一个具有特定名称和内容的文件供访问。“dns” 验证则会要求您在您的DNS中添加一条具有特定名称和内容的TXT记录。

请注意,需要手动人工验证的证书不会自动续订,必须在证书到期前(90 天)手动续订。更多信息请参阅下方的“续订证书”部分。

通配符证书

当我们只需要一个证书来覆盖所有子域名时,例如 *.example.com 通配符域名,就需要这种类型的证书。 安装 WordPress 多站点网络时,若采用了子域名配置,我们就需要这种证书。

sudo site example.com -ssl=on -wildcard

在创建通配符证书期间,需要创建一条 DNS 记录来验证域名的所有权。

要将网站添加到现有的通配符证书中:

sudo site sub.example.com -ssl=on -add-to-wildcard=example.com

目前仅支持第一级子域名。

续订证书

尽管 Webinoly 有一套实现证书自动续订的系统,但我们仍然提供了强制续订的选项。

sudo site -ssl=renew

此命令会尝试续订所有有效期不足 30 天的已获取证书。

同时,我们也可以强制更新所有证书:

sudo site -ssl=force-renewal-all

强制更新特定证书:

sudo site example.com -ssl=force-renewal

仅适用于最后一种“强制续订”选项:

  • 对于停放站域名、反代网站或需要手动验证的证书,必须分别指定 -root-root-path-wildcard-manual参数后,才能强制续订。
  • 这是续订手动证书(包括通配符证书)的唯一方法。

测试用途证书(测试环境)

我们强烈建议您在使用生产环境中的真实证书之前,先申请 Let’s Encrypt 的测试环境证书测试您的项目。这将帮助您在颁发可信的正式用途证书之前,确保站点功能一切正常,避免触及申请速率限制的风险。

# 示例
sudo webinoly example.com -ssl=on -test-cert
sudo webinoly example.com -ssl=on -test-cert -wildcard
sudo webinoly example.com -ssl=on -test-cert -root-path=/opt/app/web

始终记得用 -test-cert 参数来激活 Let's Encrypt 测试环境。

这些并非真实的正式证书,仅用于测试目的。 如果您尝试使用这些证书访问您的网站,将会出现错误。 所以切勿在生产环境中使用这些证书。

自定义 SSL 证书

用您自己的证书

您可以添加任何第三方或您自己偏好使用的证书

译者注:如Cloudflare、自签名或主机商证书

sudo site example.com -ssl=on -ssl-key=/path/cert.key -ssl-crt=/path/cert.crt -ssl-ocsp=/path/cert.pem

可选 -ssl-ocsp 参数激活 OCSP 技术。

强烈建议您使用 /etc/nginx/certs 目录来存储您的自定义证书文件,因为在使用 Webinoly 进行服务器备份或全站导出时,该目录会被包含在内。

重定向管理

创建站点重定向跳转非常简单, 只需运行以下命令并按照交互说明操作:

sudo site example.com -redirection

移除重定向:

sudo site example.com -redirection -delete
# 跳过询问(无人值守)
sudo site example.com -redirection -from=/path -to=/test -http-code=308

sudo site example.com -redirection -from=/path -to=http://example.com

sudo site example.com -redirection -from=/path -http-code=410

sudo site example.com -redirection -delete -from=/path

-http-code 参数是可选的,默认值为 302 跳转。 支持的代​​码包括:301、302、303、307、308。此外,虽然它们不能被视为重定向,但也支持 403、410、444 和 451 代码(目标“to”值将被省略或忽略)。

您同时可用 -exact 选项定义URI与特定位置 ( location ) 的精确匹配.

"EXACT" 选项有何作用?

比方说访问 /news

https://example.com/news (匹配)
https://example.com/news/local/our-city (匹配)

若您使用“精确匹配”选项:
https://example.com/news (匹配)
https://example.com/news/local/our-city (不匹配)

使用 -delete 参数时不需要同时使用 -exact 参数,它会自动删除所有匹配的路径。

#regex

[! ]

正则表达式

“regex”选项允许我们使用正则表达式,并且在命令行中必须使用单引号括起来,如上例所示。它支持以下选项:

  • sensitive – 区分大小写
  • insentive – 不区分大小写
  • longest – 指定最佳选项,不再继续评估正则表达式。

请查阅 Nginx 官方文档 以及 一些示例 ,了解如何在 Nginx 中使用正则表达式。

# 示例
sudo site example.com -redirection -from='^\.(gif|jpg|jpeg)$' -to=/test -regex=insensitive

列出当前重定向规则

sudo site example.com -redirection -list

NGINX 配置

#nginx

如果需要添加额外的 NGINX 规则,您可以在 /var/www/example.com 目录下创建自己的自定义配置文件,文件名应遵循 *-nginx.conf 的命名模式。

所有类型的网站都支持自定义配置文件。

如何添加自定义 NGINX 规则:

警告:请勿直接复制粘贴!在添加任何自定义 Nginx 规则之前,请务必清楚自己在做什么,并确保您确实需要这些规则,因为 Webinoly 已经预先处理了很多调整。

  • 举例来说,/var/www/example.com/custom-nginx.conf 就是一个可以包含您自定义规则的有效文件。
  • 可以添加多个配置文件,例如:another-nginx.conf
  • 在子目录配置中创建的站点将受主网站配置文件控制。
  • 停放站将受主网站配置文件控制。
    • 您可以为停放站添加特定规则:例如,/var/www/{maindomain.com}/*-{parkeddomain_com}_parked.conf,具体示例如下:/var/www/example.com/custom-parkedsite_com_parked.conf。同样的方法也适用于主网站,但前提是主网站已分配了停放站。在这种情况下,配置仅会应用于主网站,而不会影响停放站。
  • 请勿修改 include 套用的 NGINX 文件,否则所有更改将在某些更新过程中丢失。** 但有一些例外情况需要考虑:
    • 反向代理配置可以安全地进行修改:/etc/nginx/apps.d/example.com-proxy.conf
    • 可以安全地修改自定义缓存配置:/etc/nginx/apps.d/example.com-wpcache.conf/etc/nginx/apps.d/example.com-phpcache.conf
    • 事实上,/etc/nginx/apps.d 目录内中的所有文件在更新过程中都不会被覆盖,您可以自行承担风险进行修改。在某些情况下,Webinoly 会使用一些代码行和注释文本作为参考,任何更改都可能导致意外行为。
    • 如果您需要,可以随时运行 sudo webinoly -server-reset 命令来重置服务器恢复到正常情况。如果您已遵循以上的建议,应该是不会出现任何问题的;并且在进行某些更新时,我们也会执行类似的操作。
  • 这些配置文件都会在“server”块中通过 include 套用。 若需要将自己的自定义配置文件在“http”块中套用,您可以使用标准的 Nginx 目录“conf.d”(路径为 /etc/nginx/conf.d/*.conf)存储配置文件。
    • 我们另外创建了“conf.d”目录的一个特殊版本/扩展。您可以使用 /etc/nginx/conf.d/*.conf.srv 文件,它将应用于所有站点。(所有站点根据上下文全局生效)
  • 请记住,许多(Nginx、PHP 等)选项都可以在 Webinoly 配置文件中进行自定义设置:/opt/webinoly/webinoly.confWebinoly 配置文件文档

Webinoly 会自动检测您的网站是主域名 example.com (已配置 example.com 和 www.example.com )还是子域名 sub.example.com(仅 sub.example.com),以便确定每个网站最合适的 Nginx 配置。

没有有效TLD(顶级域名)的后缀会被配置为子域名模板。 如果出于某种原因需要强制使用特定配置,您可以在创建网站或申请 SSL 证书时使用 -subdomain 选项。

译者注:比如 .local 、org.cn 这种后缀的情况

例如:sudo site example.com -html -subdomain=true,类似地或是sudo site sub.example.com -ssl=on -subdomain=false。正如您所见,您可以将“subdomain”参数与任何其他选项一起使用,而不仅仅是在创建站点时使用。

命令 sudo webinoly -external-sources-update 仅供内部使用,主要用于更新一些外部资源,例如公共域名后缀列表和时区列表。

译者注:比如突然哪天某个小国寄了、某个地方又开关夏令时了……