TinkOL

  • 首页
TinkOL
好记性不如烂笔头!
  1. 首页
  2. Nginx
  3. 正文

Nginx fastcgi_cache 的坑

2020年2月12日 4280点热度 2人点赞 0条评论

这两天迁移完后发现一个奇怪的问题:我nginx里配置了两个vhost,分别是博客(www.tinkol.com)和图床(tu.tinkol.com),然后有时候,当我访问图床时,打开来的结果是博客。

遇到这种问题,第一印象是我nginx配置文件写错了?检查了下,没错啊,server_name 配置的明明白白,清清楚楚的。看日志,抓包,两个结果都是相同的,显示直接返回的200状态码。而nginx的日志,我两个vhosts的日志是分开记录的,当出现上诉情况时,tu.log里会记录一条200,然后在www.log里记录了其他页面元素的记录。

在排除了CDN配置和php-fpm错误的可能性后,我又想到了日志里那条诡异的200日志,之前没注意看,现在看发现这条日志没有upstream,也就是说没经过php-fpm处理,那可以肯定,还是nginx自己的问题了。

又重新审视了下nginx的配置文件,终于找到了原因,下面是图床(tu.tinkol.com)配置文件。

fastcgi_cache_path /data/cache/tu levels=1:2 keys_zone=tu:10m;
#省略无关配置
server {
    listen  443 ssl http2;
    server_name tu.tinkol.com;
    #省略无关配置
    location ~ \.php$ {
        fastcgi_pass   unix:/dev/shm/php-cgi.sock;
        include        /app/nginx/conf/fastcgi.conf;
        fastcgi_index   index.php;
	      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        try_files      $uri =404;

        expires -1;
        #下面这行就是根源所在
        fastcgi_cache www;
        fastcgi_cache_key $request_uri;
        fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
        fastcgi_cache_valid 200;
        add_header X-Cache      $upstream_cache_status;
    }
}

可以看到,我这里配置了fastcgi_cache,然后我这个配置文件是拷贝博客(www.tinkol.com)的配置文件修改的,下面的fastcgi_cache的keys_zone没有更改过来,因此两个网站使用了共同的缓存,而缓存是用request_uri做主键的,所以当直访问/这个两者共有的请求时,fastcgi_cache会直接把缓存的内容返回给客户端,就出现了这次的症状。

知道了问题根源,那就很好办了,修改完配置文件,重载nginx,至此问题解决。这次还是粗心大意导致的问题,还好是自己的网站,如果是公司业务,那麻烦可就大咯。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: nginx
最后更新:2020年2月12日

Tink

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
Linux查看软件包是否默认安装 iOS 15 初体验,IP隐藏功能测试,还有Private Relay 修复homebrew安装软件404问题 macOS在iterm2使用touch ID Python实现命令行单行倒计时 一个无语的mysql问题
升级MacMojave 后brew无法使用 一个无语的mysql问题 macOS在iterm2使用touch ID 二〇二〇 iOS 15 初体验,IP隐藏功能测试,还有Private Relay Linux查看软件包是否默认安装
标签聚合
iOS Apple MacOS CentOS Ubuntu 分享 Wordpress MacOS Mojave
归档
  • 2021年6月
  • 2021年4月
  • 2020年9月
  • 2020年3月
  • 2020年2月
  • 2019年5月
  • 2019年4月
  • 2019年1月
  • 2018年10月
  • 2018年9月

COPYRIGHT © 2022 tinkol.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备15016634号-1