多站点支持

通过CabloyJS提供的多实例特性,可以实现多站点支持,比如为不同的企业建站。请参见:EggBornJS:多实例

实例配置

在Cabloy-CMS应用中,一般把域名example.com留给静态文件,从而需要给后台管理系统分配一个子域名,比如admin.example.com

名称 域名 说明
静态部分 example.com 所有静态文件
动态部分 admin.example.com 为静态部分提供Api接口服务

src/backend/config/config.prod.js

// instances
config.instances = [
  { subdomain: 'admin', password: '', title: '',
    config: {
      'a-base': {
        jsonp: { whiteList: 'example.com' },
      },
    },
  },
];
名称 说明
subdomain 子域名
password 实例中用户root的初始访问密码,缺省为123456
title 网站标题
  • config:实例中模块的参数配置

在这里修改的是模块a-base的参数配置

名称 说明
jsonp.whiteList 跨域访问白名单,只有白名单中的域名才可以通过ajax访问后端API接口

由于静态部分动态部分域名不同,因此必须设置jsonp.whiteList

构建前端代码

$ npm run build:front

启动后端服务

$ npm run start:backend
  • 别忘了创建MySQL数据库,并配置src/backend/config/config.prod.js

停止后端服务

$ npm run stop:backend

后端服务启动参数配置

build/config.js

// backend
const backend = {
  port: 7002,
  hostname: '127.0.0.1',
};

nginx配置

强烈建议使用nginx托管前端静态资源,并反向代理后端服务

在项目根目录已经生成了两个nginx配置文件,分别对应Cabloy-CMS的动态部分静态部分,请根据实际情况修改

动态部分:nginx.conf

server {

  listen 80;
  server_name admin.example.com;
  set $node_port 7002;

  root /Users/wind/Documents/temp/cabloy-cms/dist;

  location /public {
    root /Users/wind/cabloy/cabloy-cms;
    internal;
  }

  location  /api/ {
    proxy_http_version 1.1;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://127.0.0.1:$node_port$request_uri;
    proxy_redirect off;
  }

}

静态部分:nginx-cms.conf

server {

  listen 80;
  server_name example.com;

  root /Users/wind/cabloy/cabloy-cms/public/1/cms/dist;

}