You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx如何判断请求accept头含image/webp后再重定向图片请求?

Nginx 层实现Accept头校验的图片请求分流方案

该需求完全可以在Nginx层实现,核心通过Nginx内置的$http_accept变量获取请求头的Accept值,匹配image/webp标识后走不同的处理逻辑即可。
推荐使用map+if的组合方案,性能更稳定、后续可扩展性更强:

第一步:在Nginx全局http块中定义匹配规则

http {
    # 原有全局配置无需修改,新增以下map规则
    map $http_accept $webp_support {
        default       0;
        ~*image/webp  1;
    }
    
    # server块及其他原有配置
    server {
        # ... 你的原有站点配置
    }
}

第二步:修改你的现有图片location配置

location ~ \.(png|jpg|jpeg)$ {
    # 客户端支持webp时转发到目标服务器
    if ($webp_support = 1) {
        proxy_pass http://你的目标服务地址;
        # 按需补充代理所需的请求头配置
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        break;
    }
    # 客户端不支持webp时直接返回本地静态文件
    root /你的本地静态资源根目录;
    # 可按需添加静态资源缓存配置
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

注意事项

  • 上述配置中~*代表不区分大小写匹配,可兼容不同客户端的请求头写法
  • 如果不需要全局复用webp匹配结果,也可以直接在location内判断,简化写法如下:
location ~ \.(png|jpg|jpeg)$ {
    # 不支持webp直接返回本地文件
    if ($http_accept !~* "image/webp") {
        root /你的本地静态资源根目录;
        break;
    }
    # 支持webp走代理
    proxy_pass http://你的目标服务地址;
    proxy_set_header Host $host;
}

内容的提问来源于stack exchange,提问作者Levy Barbosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:36:11