我正在使用nginx将来自客户端的请求代理到JSON数据提供者后端。如何替换其中一个请求参数(如果存在)但不满足正则表达式^\d{1,2}$
?
现在我就在这一点上:
location / {
if ( $arg_limit !~ "^\d{1,2}$" ) {
rewrite ^(.*)$ $1?limit=10 break;
}
proxy_pass http://data_provider;
}
如果未定义limit
参数,则可以使用,但如果在请求中定义了一个limit
个参数,则会发生这种情况。
必需的行为:
# no limit arg, add one with default value
/path?key=1 → /path?limit=10&key=1
# arg value satisfies regexp, don't rewrite
/path?key=1&limit=50 → /path?key=1&limit=50
# arg value doesn't satisfies regexp, replace with default
/path?key=1&limit=5000 → /path?limit=10&key=1
当然,参数顺序并不重要。
nginx/1.0.10
configure arguments:
--with-ipv6 --with-pcre --with-http_ssl_module
--with-http_addition_module --with-http_xslt_module
--with-http_geoip_module --with-http_gzip_static_module
--with-http_secure_link_module
答案 0 :(得分:1)
试试这个模块: https://github.com/chaoslawful/lua-nginx-module
你可以修改args,header和其他神奇的东西
OpenResty,一种使用ngx_lua模块的更好方法: http://openresty.org/