合并下面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. 合并并简化配置
可以合并这两部分配置,并确保它们不会冲突。将缓存和防盗链的规则合并到一个 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元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

评论已关闭!