首先http段填写map映射
map $http_user_agent $cleaned_user_agent {
default $http_user_agent;
"~(.*)KHTML(.*)" "$1$2";
}上面的实例中我删除掉的是"KHTML"这个字符串,$1$2是返回匹配的KHTML前面和后面的字符串并赋值给新的$cleaned_user_agent
然后,我们需要在对应的locaiton 里面,直接修改agent为咱们得新值
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header User-Agent $cleaned_user_agent; #这里在proxy代理的头上加上我们前面处理过的agent
root /opt/static;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}这样,后端代码去获取 User-Agent的值的话就是替换过的值了
----------------扩展-----
如果是 修改某个字符串,则map如下
map $http_user_agent $modified_user_agent {
default $http_user_agent;
"~*(.*)Safari(.*)" "$1Chrome$2"; # 👈 替换 Safari → Chrome
}等于是匹配前后值之后,再拼接我们想替换的字符串。
nginx 使用 map执行删除 user-agent的值
https://blog.coolsre.com/archives/nginx-shi-yong-mapzhi-xing-shan-chu-user-agentde-zhi
评论