nginx 使用 map执行删除 user-agent的值

首先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; 
        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
    }

等于是匹配前后值之后,再拼接我们想替换的字符串。

posted @ 2025-06-13 11:12  忙碌在路上  阅读(17)  评论(0)    收藏  举报