Macaron Documentation
  • Welcome
  • Starter Guide
  • Core Concepts
  • Core Services
  • Custom Services
  • Middlewares
    • Routing
    • Templating
    • Gzip
    • Localization
    • Data Binding and Validation
    • Cache
    • Captcha
    • Session
    • Cross-Site Request Forgery
    • Embed Binary Data
    • Serving Multiple Sites
  • FAQs
  • 简体中文
    • 初学者指南
    • 核心概念
    • 核心服务
    • 自定义服务
    • 中间件和辅助模块
      • 路由模块
      • 模板引擎
      • Gzip 压缩
      • 应用本地化
      • 数据绑定与验证
      • 缓存管理(Cache)
      • 验证码服务
      • 会话管理(Session)
      • 跨域请求攻击(CSRF)
      • 嵌入二进制数据
      • 服务多个站点
    • 常见问题
Powered by GitBook
On this page
  • 下载安装
  • 使用示例
  • 动态匹配

Was this helpful?

  1. 简体中文
  2. 中间件和辅助模块

服务多个站点

Previous嵌入二进制数据Next常见问题

Last updated 5 years ago

Was this helpful?

辅助模块 switcher 为您的应用提供多个 的支持。

下载安装

go get github.com/go-macaron/switcher

使用示例

如果您想要运行 2 个或 2 个以上的 在一个程序中,该辅助模块便可为此类需求提供便利:

func main() {
    m1 := macaron.Classic()
    // 注册 m1 实例的中间件和路由

    m2 := macaron.Classic()
    // 注册 m2 实例的中间件和路由

    hs := switcher.NewHostSwitcher()
    // 设置实例所对应的主机地址
    hs.Set("gowalker.org", m1)
    hs.Set("gogs.io", m2)
    hs.Run()
}

默认情况下,即 macaron.DEV 模式,出于对调试的便利性,该程序会监听多个端口,包括 4000(用于实例 m1)和 4001(用于实例 m2)。而当模式为 macaron.PROD 时,则只会监听一个端口,即 4000。

动态匹配

如果您有多个子域名需要使用一个 Macaron 实例来处理,则可以通过以下方式来动态匹配:

// ...
m := macaron.Classic()
// 注册 m 实例的中间件和路由

hs := macaron.NewHostSwitcher()
// 设置实例所对应的主机地址
hs.Set("*.example.com", m)
hs.Run()
// ...
GitHub
API 文档
Macaron 实例
Macaron 实例