使用1Panel部署AnQiCMS多站点时,反向代理如何设置?

各位网站运营同行们,大家好!作为一名深耕内容运营多年的老兵,同时也是安企CMS的忠实用户与深度实践者,我深知在日益激烈的市场竞争中,高效的内容管理和灵活的多站点部署对我们吸引并留存用户至关重要。安企CMS以其Go语言的高性能架构和出色的多站点管理能力,正是我们应对这些挑战的利器。

今天,我将结合我使用1Panel部署安企CMS多站点的经验,为大家详细解析在1Panel环境中如何正确设置反向代理,以实现高效、稳定的多站点运营。

安企CMS多站点架构概览

首先,我们需要理解安企CMS的多站点工作原理。与一些传统CMS不同,安企CMS设计了一套简洁高效的系统架构,允许你在单个安企CMS应用程序实例中管理多个独立的网站。这意味着,无论你有多少个品牌网站、子站点或内容分支,都无需为每个站点部署一套完整的安企CMS代码和数据库。这种设计大大降低了资源消耗和运维复杂性。

在Docker环境下,这体现为我们只需要部署一个安企CMS的Docker容器。所有的网站请求,无论域名是什么,都会首先被反向代理服务器接收,然后转发到这同一个安企CMS容器。安企CMS应用程序会根据请求头中的Host信息(即用户访问的域名),自动识别并渲染对应的网站内容。

部署安企CMS Docker容器(首次安装)

在开始设置多站点反向代理之前,请确保你的服务器已经安装了1Panel管理面板,并且在1Panel的应用商店中安装了OpenResty(作为反向代理服务器)和MySQL(或你选择的其他数据库)。

首先,我们需要在1Panel中部署安企CMS的Docker容器。这一步是所有后续多站点设置的基础。

在1Panel面板左侧菜单选择“容器”,然后点击“容器”选项卡,并点击“创建容器”按钮。 在弹出的界面中,为容器填写一个易于识别的名称,例如anqicms-main。 在镜像配置部分,选择“手动输入”,然后在输入框中填入anqicms/anqicms:latest。 端口映射是关键一步。在“暴露端口”区域,将“服务器端口”和“容器端口”都填写为8001。请注意,这个8001是安企CMS在Docker容器内部监听的端口,所有外部的反向代理都将指向这个端口。 继续往下拉,在“重启策略”部分,选择“失败后重启”或“未手动停止则重启”,确保容器的稳定性。 最后,点击“确认”完成容器的创建。

容器创建成功后,你需要为你的主站点设置一个反向代理,并通过该域名完成安企CMS的初始化安装。例如,你的主站点域名是main.anqicms.com,你将在1Panel的“网站”功能中创建一个反向代理,将main.anqicms.com代理到127.0.0.1:8001。完成安企CMS的初始化安装(填写数据库信息、管理员账号密码等)后,你的主站点即可正常使用,并且你将能通过它的后台管理其他子站点。

为安企CMS多站点配置反向代理

现在,我们已经有了一个运行中的安企CMS Docker容器,并且完成了主站点的初始化。接下来,我们将为其他需要部署的子站点设置反向代理。

假设你计划部署两个新的站点,域名分别是site1.anqicms.comsite2.anqicms.com

在1Panel面板左侧菜单选择“网站”,然后点击“网站”选项卡,并点击“创建网站”按钮。 在弹出的界面中,选择“反向代理”。 在“主域名”一栏中,填写你的第一个子站点域名,例如:site1.anqicms.com。 在“代理地址”一栏中,填写安企CMS Docker容器的内部地址和端口,即127.0.0.1:8001。 点击“确认”完成第一个子站点的反向代理设置。

重复上述步骤,为你的第二个子站点site2.anqicms.com创建另一个反向代理。同样地,“主域名”填写site2.anqicms.com,而“代理地址”依然指向同一个安企CMS Docker容器127.0.0.1:8001

请记住,无论你有多少个安企CMS子站点,在1Panel中为它们创建反向代理时,其“代理地址”都应指向你部署的唯一一个安企CMS Docker容器的内部IP和端口(通常是127.0.0.1:8001)。1Panel的OpenResty(Nginx)会自动处理域名与后端服务的映射,并将正确的Host头传递给安企CMS容器。

在安企CMS后台添加新站点

在1Panel中设置好所有域名的反向代理后,下一步是进入安企CMS的后台进行实际的站点添加。

登录你的主站点(例如main.anqicms.com/system/)的安企CMS后台。 在左侧菜单中找到并点击“多站点管理”功能。 点击“添加新站点”按钮。 在弹出的表单中,根据新站点的实际情况进行填写:

  • 站点名称:填写一个便于识别的名称,例如“我的第一个子站点”。
  • 站点根目录:这一项非常重要。由于安企CMS运行在Docker容器内,它需要一个独立的目录来存储每个站点的缓存、配置文件等数据。安企CMS建议以/app/开头,然后加上你的新站点域名(将域名中的点号替换为下划线)。例如,如果你的新站点域名是site1.anqicms.com,则填写/app/site1_anqicms_com。请确保每个站点的根目录名称都是唯一的。
  • 网站地址:填写新站点的完整访问URL,例如http://site1.anqicms.com
  • 管理员账号密码:为新站点设置独立的后台管理账号和密码。
  • 数据库名称:为新站点创建一个独立的数据库。为了避免冲突,通常也建议使用站点域名(点号替换为下划线)作为数据库名称,例如site1_anqicms_com
  • 数据库信息复用:如果你在Docker中安装安企CMS时使用了默认的数据库账号信息,这里通常可以直接选择“复用默认数据库账号信息”。如果你有特定的数据库配置需求,可以手动填写。
  • 选择使用的模板:为新站点选择一个默认的模板。

填写完毕后,点击“确定”按钮完成新站点的创建。

验证与使用新站点

完成上述所有步骤后,你的新站点就已成功部署。

你可以通过安企CMS后台的“多站点管理”列表,点击新站点旁边的“访问后台”按钮,直接进入新站点的管理界面。 或者,你也可以直接在浏览器中输入新站点的域名,例如http://site1.anqicms.com/,然后通过http://site1.anqicms.com/system/访问其后台。

通过这种方式,你可以轻松地在单个1Panel环境和单个安企CMS Docker容器下,部署和管理多个独立内容站点,极大地提高了运营效率和资源利用率。


常见问题解答 (FAQ)

1. 为什么所有的安企CMS子站点在1Panel的反向代理中都指向同一个127.0.0.1:8001端口?

这是安企CMS多站点管理设计的核心特点。安企CMS作为一个高性能的Go语言应用,其内部实现了根据请求域名来分发不同站点内容的能力。当所有外部域名通过反向代理将请求转发到同一个安企CMS容器的端口(例如8001)时,反向代理服务器会保留原始请求的Host头(即用户访问的域名)。安企CMS容器接收到请求后,会读取这个Host头,并根据你在安企CMS后台“多站点管理”中配置的网站地址,准确地加载和渲染对应站点的内容和数据。这种集中式的服务模式,大大简化了部署和运维。

2. 我是否可以为每个安企CMS子站点部署一个独立的Docker容器,并让它们监听不同的端口?

是的,这是另一种部署多站点的方式,但它适用于你希望每个站点都拥有完全独立、互不影响的安企CMS实例的场景。如果你选择这种方式,你需要在1Panel中为每个安企CMS应用创建独立的Docker容器,让它们分别监听不同的容器端口(例如8001、8002、8003等)。然后,在1Panel中为每个站点域名创建反向代理时,将代理地址指向对应Docker容器的独立端口(例如,site1.com代理