使用nginx将通配符子域重定向到不同的顶级域

时间:2010-12-01 18:17:19

标签: ssl redirect https nginx rewrite

我们有一堆通配符子域(_foo.example.com,bar.example.com等),当通过HTTPS访问时,它们会重定向到我们安全域上的等效子域。

一些例子:

我认为这可以通过nginx重写来实现,但我不确定语法。这是我正在尝试的:

server {
    listen        443;
    server_name   *.example.com;

    rewrite       ^(.*)   https://*.secure.com$1 permanent;
}

这显然不起作用,因为我没有捕获传入的子域并在重写中使用它。

2 个答案:

答案 0 :(得分:3)

尝试这样的事情(未经测试):

server {
    listen 80;
    listen 443 default ssl;

    server_name "~^(?<name>\w\d+)\.example\.com$";

    rewrite ^(.*) https://$name.secure.com$1 permanent;
}

答案 1 :(得分:0)

http://forum.slicehost.com/comments.php?DiscussionID=730

上找到了这个
# redirects arbitrary subdomain (some.random.sub.example.com) to (some.random.sub.example.org)
if ($host ~* "^([^.]+(\.[^.]+)*)\.example.com$"){
  set $subd $1;
  rewrite ^(.*)$ http://$subd.example.org$1 permanent;
  break;
}

# Simply redirects example.com to example.org
if ($host ~* "^example.com$"){
  rewrite ^(.*)$ http://example.org$1 permanent;
  break;
}