Nginx重写:如何将URL从动态更改为静态

Nginx重写:如何将URL从动态更改为静态,nginx,url-rewriting,reverse-proxy,remap,Nginx,Url Rewriting,Reverse Proxy,Remap,我正在将nginx配置为反向代理 我需要更改(重写?)URL,例如:当请求(到nginx反向代理)为“”时,它必须“修改”到主服务器为“” 考虑到在原始请求中,字段“username=test1;password=passwdtest1”并不总是相同的(它们会更改),相反,主服务器的“modified”总是相同的 其他例子更为明确: “/test/?username=test1;password=passwdtest1”->”/test/?username=production;password

我正在将nginx配置为反向代理

我需要更改(重写?)URL,例如:当请求(到nginx反向代理)为“”时,它必须“修改”到主服务器为“”

考虑到在原始请求中,字段“username=test1;password=passwdtest1”并不总是相同的(它们会更改),相反,主服务器的“modified”总是相同的

其他例子更为明确:

“/test/?username=test1;password=passwdtest1”->”/test/?username=production;password=passwdproduction1”

“/test/?username=test1876;password=somepasswd”->”/test/?username=production;password=passwdproduction1”

“/test/?username=somevalues;password=somepasswdvalue”->”/test/?username=production;password=passwdproduction1”

因此,与“?username=somevalues;password=somepasswdvalue”的值无关,“它应该始终成为”?username=production;password=passwdproduction1”


谢谢你的帮助

回答有点晚了,但这应该对你有用:

location ~* /test/? {
    if ($arg_username ~ "^$|\s+") { return 404; }
    if ($arg_password ~ "^$|\s+") { return 404; }
    rewrite ^ /test?username=production&password=passwdproduction1? permanent;
}
上面的代码检查它是否在example.com/test路径中。如果是,它将检查用户名或密码变量在查询字符串中是否存在且不为空。如果有不存在或为空,它将返回404,否则它会将您重定向到首选url


顺便说一句,在你的示例URL中,我将使用符号(&)而不是分号。

更新:我用以下方式解决:
location~/test/{if($args~“username=(.+);password=(.+)”{rewrite^.*$“/test/?username=production;password=passwdproduction1”break;}