nginx 变量子域的重写规则

nginx 变量子域的重写规则

请帮我在 Nginx 中创建重写规则,以便此 URLhttps://subdomain.domain.com/api被重写为https://subdomain-api.domain.com

提前致谢。

答案1

根据 nginx 文档,最好使用位置而不是创建重写规则。类似这样的内容应该可以帮助您:

server {
    server_name subdomain.domain.com;
    location /api {
        return 301 https://subdomain-api.domain.com$request_uri;
    }
}

答案2

按照其他答案,最好使用重定向,但您还应确保 HTTP 方案和任何 URL 参数都得到保留,如下所示:

根据您的评论,如果您知道您将拥有多少个子域名,最简单的方法是定义它们全部:

server {
    server_name subdomain1.domain.com;
    location /api { 
        return 301 $scheme://sub1-api.domain.com/$1$is_args$query_string; 
    }
}

server {
    server_name subdomain2.domain.com;
    location /api { 
        return 301 $scheme://sub2-api.domain.com/$1$is_args$query_string; 
    }
}

或者这可能有效:

server {
    server_name: subdomain1.domain.com subdomain2.domain.com subdomain3.domain.com;
    location /api { 
        if ($host ~* (.*)\.domain\.com) {
            set $sub_domain $1;
            return 301 $scheme://$sub_domain-api.domain.com/$1$is_args$query_string; 
        }
    }

}

相关内容