nginx服务器配置合并缓存特定资源配置和防盗链配置

2024-06-25 15:36 nginx服务器配置合并缓存特定资源配置和防盗链配置已关闭评论

合并下面nginx资源缓存和防盗链配置

##
# 缓存特定资源
##
location ~* \.(css|js|jpg|jpeg|png|gif|ico)$ {
     expires 30d;
     add_header Cache-Control "public, no-transform";
}

## 防盗链start========================
location ~* \.(gif|jpg|jpeg|png|swf|flv|js|css)$ { 
  valid_referers server_names *.xxx.xx;
  if ($invalid_referer) { 
    return 403; 
  } 
}

导致静态资源(如CSS和JS文件)无法正确加载,返回404错误的原因。

  1. 缓存特定资源的配置
  2. 防盗链的配置

解决办法

1. 合并并简化配置

可以合并这两部分配置,并确保它们不会冲突。将缓存和防盗链的规则合并到一个 location 块中:

server {
    listen 80;
    server_name www.xxx.xx;

    location / {
        proxy_pass http://127.0.0.1:xxx;
        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-Proto $scheme;
    }

    location /static/ {
        alias /home/xxx/static/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    location ~* \.(css|js|jpg|jpeg|png|gif|ico|swf|flv)$ {
        valid_referers server_names *.xxx.xx;
        if ($invalid_referer) {
            return 403;
        }
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

2. 逐步调试配置

逐步添加配置,并测试每一步是否能正确加载资源。

测试缓存配置

首先,测试只包含缓存设置的配置:

server {
    listen 80;
    server_name www.xxx.xx;

    location / {
        proxy_pass http://127.0.0.1:xxx;
        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-Proto $scheme;
    }

    location /static/ {
        alias /home/xxx/static/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    location ~* \.(css|js|jpg|jpeg|png|gif|ico)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

测试防盗链配置

然后,测试只包含防盗链设置的配置:

server {
    listen 80;
    server_name www.xxx.xx;

    location / {
        proxy_pass http://127.0.0.1:xxx;
        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-Proto $scheme;
    }

    location /static/ {
        alias /home/jsonformat/static/;
    }

    location ~* \.(css|js|jpg|jpeg|png|gif|ico|swf|flv)$ {
        valid_referers server_names *.xxx.xx;
        if ($invalid_referer) {
            return 403;
        }
    }
}

3. 确认并应用合并配置

一旦确认单独的缓存和防盗链配置都能正常工作,再将它们合并。

4. 重新加载Nginx

每次修改配置后,重新加载或重启Nginx以使更改生效:

sudo nginx -t
sudo systemctl reload nginx

5. 检查Nginx日志

如果仍然有问题,请检查Nginx的错误日志,以获取更多信息:

tail -f /var/log/nginx/error.log

通过逐步测试并合并配置,找到导致静态资源加载失败的具体原因,并确保Nginx正确提供静态文件。

当前文章价值8.87元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://teachcourse.cn/3547.html ,谢谢支持!

资源分享

分类:nginx 标签:, ,
一个例子让我理解WebViewClient各方法重写的作用 一个例子让我理解WebViewClie
WordPress文章分页插件:Multi-page Toolkit WordPress文章分页插件:Mult
100个python小工具001:文件重命名 100个python小工具001:文件重命
nginx配置图片地址 nginx配置图片地址

评论已关闭!