Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 使用nginx将通配符子域重定向到其他顶级域_Ssl_Redirect_Https_Nginx_Rewrite - Fatal编程技术网

Ssl 使用nginx将通配符子域重定向到其他顶级域

Ssl 使用nginx将通配符子域重定向到其他顶级域,ssl,redirect,https,nginx,rewrite,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 pe

我们有一组通配符子域(_foo.example.com、bar.example.com等),当通过HTTPS访问时,这些子域应该重定向到安全域上的等效子域

一些例子:

  • =>
  • =>
  • =>
我认为这可以通过nginx重写来完成,但我不确定语法。以下是我正在尝试的:

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

    rewrite       ^(.*)   https://*.secure.com$1 permanent;
}
这显然不起作用,因为我没有捕获传入的子域并在重写中使用它。

尝试类似的方法(未测试):

服务器{
听80;
监听443默认ssl;
服务器名称“~^(?\w\d+)\.example\.com$”;
重写^(.*)https://$name.secure.com$1永久;
}
在上找到此


我喜欢这个解决方案,它适合我(为我自己的目的进行了大量修改)。
server {
    listen 80;
    listen 443 default ssl;

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

    rewrite ^(.*) https://$name.secure.com$1 permanent;
}
# 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;
}