繁体   English   中英

如何在Nginx服务器块中使用正则表达式获取参数?

[英]How can I get a param using regex in a nginx server block?

我正在尝试通过正则表达式在nginx服务器的服务器块中获取参数(例如,h = 1500),但是它不起作用。 我最后的尝试是这样的:

location ~ "^/app/events/(?<eventid>\d+)/(?<image>.+)?h=(?<height>\d+)$" { ...... }

在这里您可以检查它是否有效: https : //regex101.com/r/kP9eY9/1

但是在我的服务器阻止文件中却没有。

如果我尝试这样的话,它会起作用:

location ~ "^/app/events/(?<eventid>\d+)/(?<image>.+)/(?<height>\d+)$" { ...... }

取而代之的是像“ h = 300”这样的参数,我只是使用“ / 300”,并且可以在服务器块文件中获取该值。

我不是使用正则表达式的专家,所以我看不出有什么问题。 我需要你们的帮助! 谢谢!

文档中

所有类型的位置仅测试请求行的URI部分,不带参数

这意味着? 以及随之而来的一切。

如@Richard所述,您不能在位置正则表达式中使用请求参数。

如果需要在nginx配置中使用请求参数,则可以使用$ arg_和/或$ args语法:

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_ http://nginx.org/en/docs/http/ngx_http_core_module.html#var_args

location / {
  if ($arg_param = 'someval') {
     # some code here
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM