NGINX重定向所有请求将URL与参数匹配到子域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NGINX重定向所有请求将URL与参数匹配到子域相关的知识,希望对你有一定的参考价值。
我有一个网站也在主域上的应用程序上提供api请求。我想将所有匹配/ api请求发送到api子域。
例如,我想https://example.com/api + https://example.com/api/some_action + https://example.com/api/some_action?params1=somevalue¶ms2=value2 ....重定向到相同的url结构,但只是在子域。
所以对于上面的例子:
https://example.com/api - > https://api.example.com/api
https://example.com/api/some_action - > https://api.example.com/api/some_action
https://example.com/api/some_action?params1=somevalue¶ms2=value2 .... - > https://api.example.com/api/some_action?params1=somevalue¶ms2=value2 ....
对于所有类型的请求(获取,发布等)。到目前为止,我已经在主域的服务器指令中尝试了这一点(在443 SSL服务器指令中)
location ~ /api(.*)$ {
return 301 https://api.example.com/api/$request_uri$is_args$args;
}
我在https://api.example.com/api/some_action?param1=value上执行简单的GET请求时获得的结果是没有参数的https://api.example.com//some_action并且错过了api。
要将example.com/api/foo?bar
重定向到api.example.com/api/foo?bar
,您应该使用:
location ^~ /api {
return 307 https://api.exemple.com$request_uri;
}
$request_uri
变量包含原始请求,包括/api/
前缀和查询sring。
^~
运算符给出了location
优先级(详见this document)。 307状态代码通过重定向维护GET / POST(有关更多信息,请参阅this link)。
以上是关于NGINX重定向所有请求将URL与参数匹配到子域的主要内容,如果未能解决你的问题,请参考以下文章