请帮我在Nginx中创build一个重写规则,这样这个URL https://subdomain.domain.com/api被重写到https://subdomain-api.domain.com
提前致谢。
通过nginx文档,最好使用位置而不是创build重写规则。 像这样的东西应该可以帮助你:
server { server_name subdomain.domain.com; location /api { return 301 https://subdomain-api.domain.com$request_uri; } }
根据另一个答案,最好使用redirect,但是您还应该确保HTTPscheme和任何URL参数保留,如下所示:
根据您的评论,如果您知道您将拥有多less个子域名,最简单的方法是将其全部定义:
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; } } }