nginX
当我ntpdate ntp.ubuntu.com
同步服务器时钟 时出现了缓存问题。
现在,当我请求路径时http://www.example.com/project/create
,我会收到我正在处理的旧 PHP 文件。
我尝试设置sendfile
为off
,nginx.conf
甚至关闭了cloudFlare
我的 DNS 缓存,但没有成功。
当我查看标题部分时,curl -I http://www.example.com/project/create
我得到了以下回应:
HTTP/1.1 302 Moved Temporarily │
Server: nginx │
Date: Fri, 15 Aug 2014 10:51:38 GMT │
Content-Type: text/html │
Connection: keep-alive │
Set-Cookie: PHPSESSID=cihsfrq6aoat5baun8dem01go5; path=/ │
Expires: Thu, 19 Nov 1981 08:52:00 GMT │
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 │
Pragma: no-cache │
Location: http://www.example.com/site/login
我找不到任何要删除的 nginx 缓存文件夹。完成所有这些更改后,我重新启动了 nginX,但没有任何效果。我想不出发生这种情况的其他原因。
编辑1:
似乎当我使用时ntpdate ntp.ubuntu.com
,它会将服务器时间更改为,7:25
而我的时间是16
!? 文件修改现在为 16,即旧日期,而我的系统时间是 7:25。如果我将时间更改为 16,那么我的推送器将抛出一个错误并说给出的时间戳已过期:
string(112) "Timestamp expired: Given timestamp (2014-08-15T20:06:20Z) not within 600s of server time (2014-08-15T11:39:59Z) "
答案1
您可能APC
在 PHP 中安装了缓存模块。强制刷新 APC 缓存的最简单方法是重新启动PHP-FPM
守护进程。
答案2
缓存时间是使用当前系统时间构建的。您所经历的时间跳跃预计会产生奇怪的行为。 nginx
只是几个可以这样表现的程序之一。一旦时间赶上,这些问题通常就会消失。
尝试运行ntp
守护进程,而不是定期运行ntpdate
。ntp 相对于 ntpdate 的一个优势是,对于较小的调整,它将使时钟平稳而不是跳跃。一旦您的时钟同步,ntp 将大约每 15 分钟(1024 秒)查询一次其服务器。
如果您知道您的时钟明显偏差,那么您可以在很长一段时间内手动调整时钟。这可以编写脚本并作为 cron 作业运行。一旦您与实际时间相差一分钟左右,您就可以启动守护程序ntp
。