ZBLOG

nginx响应静态资源如何设置响应头

在 Nginx 中配置静态资源的响应头,可以通过 add_header 指令和 expires 等模块实现。以下是常见场景的配置示例和说明:


1. 基础响应头设置

server {
    listen 80;
    server_name example.com;

    location /static/ {
        # 静态资源路径
        alias /path/to/static/files/;

        # 通用安全与缓存头
        add_header Cache-Control "public, max-age=86400"; # 缓存1天
        add_header X-Content-Type-Options "nosniff";       # 禁止MIME嗅探
        add_header X-Frame-Options "SAMEORIGIN";           # 防iframe嵌套劫持
        add_header Content-Security-Policy "default-src 'self'"; # CSP策略

        # 自定义头部(可选)
        add_header My-Custom-Header "value";
    }
}

2. 针对不同文件类型设置不同头部

location ~* \.(jpg|png|gif|ico|css|js)$ {
    root /path/to/static;

    # 图片类资源缓存30天
    if ($request_filename ~* \.(jpg|png|gif|ico)$) {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    # CSS/JS类资源缓存7天并启用压缩
    if ($request_filename ~* \.(css|js)$) {
        expires 7d;
        add_header Cache-Control "public";
        gzip_static on; # 需预先生成.gz文件
    }
}

3. CORS跨域支持

location /assets/ {
    alias /path/to/assets/;

    # CORS配置(允许所有域名访问)
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent';

    # OPTIONS预检请求处理
    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

4. MIME类型强制修正

若静态资源的扩展名与实际类型不符,可强制指定:

location /downloads/ {
    types { }          # 清空默认MIME映射
    default_type application/octet-stream; # 强制为二进制流
}

关键指令说明

指令 作用
add_header 添加任意自定义响应头(重复指令会覆盖前值,需注意作用域)。
expires 设置资源的过期时间(需加载 ngx_http_headers_module)。
gzip_static 优先发送预压缩的 .gz 文件(需配合 gzip 模块)。
types {} 重置或自定义 MIME 类型映射。

调试建议

  1. 检查生效情况
    
    curl -I http://example.com/static/file.js
    
  2. Nginx重载配置
    
    nginx -t && nginx -s reload
    

根据实际需求调整缓存策略、安全头或跨域规则即可。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23082

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?