请帮我在 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;
}
}
}