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

阅读 3.8k
1 个回答

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

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;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题