【问题标题】:How to redirect to other vhost in nginx如何重定向到 nginx 中的其他虚拟主机
【发布时间】:2017-05-04 09:19:52
【问题描述】:

假设我有a.mywebsite.comb.mywebsite.com。因为完全限定的域名可能是不同的,例如在开发和测试环境中它不会是mywebsite.com,我想制定规则,以便将所有对a. 的请求移动到b.

我认为配置文件可能类似于以下内容,但我无法弄清楚将 int <what goes here> 放入什么是正确的。

server {
  server_name ~^a\.;
  return 301 b.<what goes here?>;
}

server {
  server_name ~^b\.;
}

还是我走错了方向?

【问题讨论】:

    标签: nginx vhosts


    【解决方案1】:

    我会选择一个命名的正则表达式组,例如:

    server {
      server_name ~^a\.(?<domain>.+)$;
      return 301 b.$domain;
    }
    

    【讨论】:

    • 谢谢!我想这会变得低效,因为正则表达式的匹配速度较慢,对吧?
    • 没错,正则表达式比完全匹配要慢,但原来的问题已经使用了正则表达式。我相信将它放在重定向 uri 上并不麻烦,因为我们会引导客户离开该地址。在目标 vhost 中,~^b\. 正则表达式可以替换为 b.*,根据文档(无正则表达式;通过哈希表解析)应该会快一点。
    • 我明白了。我想最后,我会尝试让 nginx 配置文件成为渲染模板,这样它们既灵活又高效(希望我不会过早优化!)
    【解决方案2】:

    这是满足您要求的简单解决方案。

    这里发生了什么 = mywebsite.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-06
      • 2016-02-28
      • 1970-01-01
      • 2015-11-13
      • 2012-02-06
      • 2012-03-29
      • 2012-08-18
      • 2015-06-09
      相关资源
      最近更新 更多