nginx有办法设置域名变量吗?

有多个server{}要使用同一个域名。感觉每次总是重复设置有些不优雅。
有没有办法可以这样:

http{
    ......
    set $domain_name example.com;
    server {
        listen 80;
        // server_name a.example.com
        server_name a.$domain_name;
        return 301 https://$host$request_uri;
    }
    server {
        listen 80;
        // server_name b.example.com
        server_name b.$domain_name;
        return 301 https://$host$request_uri;
    }
}

提示错误"set" directive is not allowed here

阅读 248
评论 更新于 2月14日
    1 个回答
    zonxin
    • 11.9k

    通配符或是,命名的正则匹配不更香么

    server {
        server_name   *.example.com;
        return 301 https://$host$request_uri;
    }
    server {
        server_name   ~^(?<var_name>[ab])\.example\.com$;
        // 这里可以使用变量 var_name
        return 301 https://$host$request_uri;
    }
    评论 赞赏 2月15日
      撰写回答

      登录后参与交流、获取后续更新提醒