在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
map指令使用ngx_http_map_module模块提供的。默认情况下,nginx有加载这个模块,除非人为的 --without-http_map_module。 map $http_user_agent $agent { default ""; ~curl curl; ~*apachebench" ab; } 正则表达式里可以包含命名捕获和位置捕获,这些变量可以跟结果变量一起被其它指令使用。 map $uri $value { /ttlsa_com /index.php; ~^/ttlsa_com/(?<suffix>.*)$ /boy/; ~/fz(/.*) /index.php?; } [warning]不能在map块里面引用命名捕获或位置捕获变量。如~^/ttlsa_com/(.*) /boy/$1; 这样会报错nginx: [emerg] unknown variable。[/warning]如果源变量值包含特殊字符如‘~',则要以‘\'来转义。 map $http_referer $value { Mozilla 111; \~Mozilla 222; } 结果变量可以是一个字符串也可以是另外一个变量。 map $num $limit { 1 $binary_remote_addr; 0 ""; } map指令有三个参数: http { map $http_user_agent $agent { ~curl curl; ~*chrome chrome; } server { listen 8080; server_name test.ttlsa.com; location /hello { default_type text/plain; echo http_user_agent: $http_user_agent; echo agent: agent:$agent; } } } # curl 127.0.0.1:8080/hello http_user_agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 agent: curl http { map $uri $match { ~^/hello/(.*) http://www.ttlsa.com/; } server { listen 8080; server_name test.ttlsa.com; location /hello { default_type text/plain; echo uri: $uri; echo match: $match; echo capture: $1; echo new: $match$1; } } } PS:基于map指令和geo指令的限速白名单配置 http { geo $whiteiplist { default 1; 127.0.0.1 0; 10.0.0.0/8 0; 121.207.242.0/24 0; } map $whiteiplist $limit { 1 $binary_remote_addr; 0 ""; } limit_conn_zone $limit zone=limit:10m; server { listen 8080; server_name test.ttlsa.com; location ^~ /ttlsa.com/ { limit_conn limit 4; limit_rate 200k; alias /data/www.ttlsa.com/data/download/; } } } 技术要点: # ab -c 100 -n 300 http://test.ttlsa.com:8080/ttlsa.com/docs/pdf/nginx_guide.pdf |
请发表评论