nginx map指令使用方法
map指令由ngx__map_module模块提供,并且默认加载。
map指令用来创建变量,仅在变量被接受的时候执行视图映射操作。
map指令配置段位于段内。
map指令有三个参数:
default:默认值,当没有设置 default,将会用一个空的字符串作为默认的结果。
hostnames:允许用前缀或者后缀掩码指定域名作为源变量值。(这个参数必须写在值映射列表的最前面)
include:包含一个或多个含有映射值的文件。
可以使用正则表达式:
以 ~ 开头,表示这个正则表达式对大小写敏感。
以 ~*开头,表示这个正则表达式对大小写不敏感。
使用示例
{
map $_user_agent $agent {
~curl curl;
~*chrome chrome;
}
server {
listen 8080;
server_namewww.test.com;
location hello {
default_type textplain;
echo _user_agent: $_user_agent;
echo agent: agentagent;
}
}
}
执行curl 127.0.0.1:8080hello得到如下信息
_user_agent: curl7.15.5 (x86_64-redhat-linux-gnu) libcurl7.15.5 openssl0.9.8b zlib1.2.3 libidn0.6.5
agent: curl
使用实例
维护一个ip.conf的配置文件,实现根据ip自动切换目录并且不用频繁重启nginxip.conf实例内容如下
192.168.1.1 dir1;
192.168.1.2 dir2;
nginx配置如下
{
map $ip $dir {
default test;
include ip.conf;
}
server {
listen 8080;
server_namewww.test.com;
root data$dirwww;
rewrite ^(js|images|css)(.*) :static.test.com$1$2 permanent;
location{
try_files $uri $uri index.php?$query_string;
}
}
}
下面关于nginx的文章您也可能喜欢,不妨参考下:
nginx 403 forbidden的解决办法? :www.linuxidc.comlinux2017-08146084.htm
centos 7下nginx服务器的安装配置? :www.linuxidc.comlinux2017-04142986.htm
centos上安装nginx服务器实现虚拟主机和域名重定向? :www.linuxidc.comlinux2017-04142642.htm
centos 6.8 安装lnmp环境(linux+nginx+mysql+php)? :www.linuxidc.comlinux2017-04142880.htm
linux下安装php环境并配置nginx支持php-fpm模块? :www.linuxidc.comlinux2017-05144333.htm
nginx服务的ssl认证和htpasswd认证? :www.linuxidc.comlinux2017-04142478.htm
ubuntu 16.04上启用加密安全的nginx web服务器? :www.linuxidc.comlinux2017-07145522.htm
linux中安装配置nginx及参数详解? :www.linuxidc.comlinux2017-05143853.htm
nginx日志过滤 使用ngx_log_if不记录特定日志 :www.linuxidc.comlinux2014-07104686.htm
centos 7.2下nginx+php+mysql+memcache缓存服务器安装配置? :www.linuxidc.comlinux2017-03142168.htm
centos6.9编译安装nginx1.4.7? :www.linuxidc.comlinux2017-06144473.htm
以上主要是介绍如何使用nginx map指令的内容,需要的朋友可以参考下,谢谢大家对技术频道的支持。
?