timedatectl 无法通过 cronjobs 通过 curl 请求获取更新

timedatectl 无法通过 cronjobs 通过 curl 请求获取更新

我在 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 映射

相关内容