如何编写nginx重写规则来替换查询字符串

时间:2017-09-14 16:51:50

标签: nginx nginx-reverse-proxy

人们!

我们有以下http请求:

  

http://185.xxx.x.xx/auth/realms/master-realm/protocol/openid-connect/auth?response_type=code&client_id=regportal&redirect_uri=http%3A%2F%2Fsome.domain.com%2Fregportal%2Fsso%2Flogin&state=a49a02d5-f873-453f-9148-61793f11ecf3&login=true&scope=openid

我们希望从" some.domain.com"中取代redirect_uri到" other.domain.com"。

怎么做?

由于

1 个答案:

答案 0 :(得分:3)

你需要这样做

location /auth/realms/master-realm/protocol/openid-connect/auth {
   if ($args ~* "(.*)(some\.domain\.com)(.*)") {
       set $args "$1other.domain.com$3";
       return 301 $scheme://$host$uri$args;
   }

}

<强>测试

curl -I  "vm/auth/realms/master-realm/protocol/openid-connect/auth?response_type=code&client_id=regportal&redirect_uri=http%3A%2F%2Fsome.domain.com%2Fregportal%2Fsso%2Flogin&state=a49a02d5-f873-453f-9148-61793f11ecf3&login=true&scope=openid"
HTTP/1.1 301 Moved Permanently
Server: openresty/1.11.2.2
Date: Fri, 15 Sep 2017 06:01:51 GMT
Content-Type: text/html
Content-Length: 191
Connection: keep-alive
Location: http://vm/auth/realms/master-realm/protocol/openid-connect/authresponse_type=code&client_id=regportal&redirect_uri=http%3A%2F%2Fother.domain.com%2Fregportal%2Fsso%2Flogin&state=a49a02d5-f873-453f-9148-61793f11ecf3&login=true&scope=openid