nginx location块可以匹配URL查询string吗?
例如,什么位置块可能匹配HTTP GET请求
GET /git/sample-repository/info/refs?service=git-receive-pack HTTP/1.1
nginx位置块可以匹配URL查询string吗?
简短的回答 :不。
长答案 :如果我们只有less数这样的位置块,则有一个解决方法。
以下是需要匹配特定查询string的3个位置块的示例解决方法:
server { #... common definitions such as server, root location / { error_page 418 = @queryone; error_page 419 = @querytwo; error_page 420 = @querythree; if ( $query_string = "service=git-receive-pack" ) { return 418; } if ( $args ~ "service=git-upload-pack" ) { return 419; } if ( $arg_somerandomfield = "somerandomvaluetomatch" ) { return 420; } # do the remaining stuff # ex: try_files $uri =404; } location @queryone { # do stuff when queryone matches } location @querytwo { # do stuff when querytwo matches } location @querythree { # do stuff when querythree matches } }
您可以使用$ query_string,$ args或$ arg_fieldname。 所有人都会做这个工作。 您可以在官方文档中了解更多关于error_page的信息 。
警告:请确定不要使用标准的HTTP代码 。