我在 Ubuntu 20.04 上遇到了时间问题
当我命令时间时:timedatectl
系统时钟同步:是,
但是当我通过 curl 请求 PHP 中的时间时,时间没有改变,
https://domain.com/time.php
但是如果我在同一个 URL 时间中添加一些 rnd 参数,则每秒都会更新一次。
https://domain.com/time.php?action=time&rnd=$rnd
time.php 只是一个测试文件,我有很多 php curl 请求文件,所以我想在服务器上全局修复它
include /home/admin/conf/web/domain.com/nginx.hsts.conf*; # protect videos from direct access location ^~ /contents/videos/ { root /home/admin/web/domain.com/public_html; limit_rate_after 2m; expires 35d; internal; } location ^~ /contents/albums/ { root /home/admin/web/domain.com/public_html; expires 35d; } location / { proxy_pass https://0.0.0.0:8443; proxy_cache cache; proxy_cache_valid 15m; proxy_cache_valid 404 1m; proxy_no_cache $no_cache; proxy_cache_bypass $no_cache; proxy_cache_bypass $cookie_session $http_x_update; location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|g> proxy_cache off; root /home/admin/web/domain.com/public_html; access_log /var/log/apache2/domains/domain.com.log combined; access_log /var/log/apache2/domains/domain.com.bytes bytes; expires 35d; try_files $uri @fallback; } }
答案1
您有一长串要禁用缓存的文件扩展名,但 php 不是其中之一。因此,当您请求 time.php 时,该页面会在 NGINX 上缓存 15 分钟。
当您添加查询字符串参数时,您正在更改 URL,因此 nginx 会获取一份新副本并将其缓存。每次更改 $rnd 值都会获得一份新副本。
来自评论的更新(地图)
# Cache bypass
map $http_cookie $no_cache {
default $no_cache_path;
~SESS 1;
~wordpress_logged_in 1;
}
map $uri $no_cache_path {
default 0;
~*time.php 1;
}
如果设置了 cookie,这将绕过缓存,如果没有设置,它将检查绕过 time.php 的 $no_cache_path 映射