Nginx处理静态文件请求的配置问题

栏目: 服务器 · Nginx · 发布时间: 6年前

内容简介:Nginx处理静态文件请求的配置问题

查看网站后台log的时候,发现类似“apple-touch-icon-152×152.png”,“apple-touch-icon.png”之类的请求。看文件名是浏览站点时浏览器顺带发出的icon请求,由于网站没有提供icon从而报错。为了避免这个问题,便在web根目录下touch了这类文件。

问题已经解决,事情到这里原本可以告一段落。然而几天前查看另外一个站点的log,发现了同样的提示。多留心一下,发现了问题:web服务器用的Nginx,Nginx中配置了静态文件直接处理,不应该转发到后端PHP。这样的错误是怎么回事?

查看Nginx的转发规则,配置如下:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}
 
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    expires max;
    try_files $uri =404;
}
 
location ~ ^/assets/.*\.php$ {
    deny all;
}
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/dev/shm/phpfpm.sock;
    try_files $uri =404;
}
 
location ~* /\. {
    deny all;
}
 
error_page 404 /404.html;
location = /40x.html {
}

看上去合情合理:对指定后缀名的静态文件请求,如果文件存在则直接发送,不存在就跳转404页面;PHP请求则通过fastcgi的方式转发到后端PHP-FPM。打脸的事实是,不存在的静态文件,例如/ccc.png,还是转发到了 PHP 端。

为了查找问题所在,首先在/段的规则改一下,当文件不存在时直接404。即进行如下配置:

location / {
    try_files $uri $uri/ =404;
}

重启服务器后,发现运转正常,说明问题出在将请求转发到了PHP。

接着把PHP段的配置注释掉,再次访问,提示服务器错误。在Nginx的error日志上看到如下记录:

2017/05/27 10:44:28 [error] 6515#0: *919rewrite or internal redirection cycle while internally redirecting to "/404.html//////////", client: 10.0.2.2, server: , request: "GET /cccc.png HTTP/1.1", host: "localhost:8081"

看情况是404页面被多次重定向。再回顾配置,试图解释这一现象发生的原因: 根据规则优先级,先匹配了 .png;Nginx去磁盘找文件,发现文件不存在就转到404;配置指定了404页面为 /404.html;接着处理/404.html,匹配到了 / 规则,于是出现了//404.html//////////的请求。

分析出了原因,问题就比较好解决了。一种办法是将规则中的 /40x.html 改成 /404.html;或者将error_page和 /40x.html的都注释掉,让Nginx处理404页面。

注释掉404的配置后,访问效果如图:

Nginx处理静态文件请求的配置问题

参考

  1. https://tlanyan.me/nginx-location-syntax/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

KK三部曲

KK三部曲

(美)凯文·凯利(Kevin Kelly) / 张行舟 / 中信出版社 / 2015-12-12 / 80.00元

《失控 全人类的*终命运和结局》这是《黑客帝国》主要演员的必读物之一,这本关于机器、系统、生物和社会的“大部头”,揭示了社会进化、特别是互联网发展的“先知预言”,从这本书里,人们可以窥探到SNS的今天和未来。 《失控 全人类的*终命运和结局》涉猎:天文、化学、生物、计算机、控制论、运筹学、社会学…… 同时又堪比《黑客帝国》中洞悉未来的“神谕”,正在兴起的“云计算”、“物联网”等都可以在......一起来看看 《KK三部曲》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具