如果WordPress不是完全的响应式设计,也就是说移动端访问的内容与PC端访问的内容不完全一致时,可能希望将服务器端 nginx 缓存分开,由浏览器确定使用移动端或PC端(桌面)的缓存。本文将介绍如何配置 nginx fastcgi 或反向代理缓存,以便为移动端和桌面端分开缓存。
我们将使用 nginx 指令来检测用户代理并将其归到移动和桌面分类中。
# map the list of user agents must escape ( with \( map $http_user_agent $mobile_user { default "ZHANZHANGB_DESKTOP"; # Android "~Mozilla/5.0 \(Linux; Android" ZHANZHANGB_MOBILE; # Opera "~Opera Mini" ZHANZHANGB_MOBILE; # iOS "~Mozilla/5.0 \(iPhone" ZHANZHANGB_MOBILE; # Windows Phone "~Mozilla/5.0 \(Windows Phone" ZHANZHANGB_MOBILE; }
现在,需要修改缓存密钥,在逻辑上区分桌面和移动用户。fastcgi_cache_key$mobile_user
location ~ \.php$ { try_files $uri =404; # add cache status add_header WP-Zhanzhangb-Fastcgi-Cache $upstream_cache_status; # add the cache skip reason if relevant add_header WP-Zhanzhangb-Skip $skip_reason; add_header X-Exception $exception; include fastcgi_params; fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_cache_bypass $http_secret_header $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; fastcgi_cache_key "$scheme$request_method$host$mobile_user$request_uri"; fastcgi_cache_valid 404 1m; fastcgi_cache_valid 60m; }
还可以在Nginx的自定义指令中使用此变量,以便在代码块中使用类似的代码来跟踪移动访问者$ mobile_useraccess_loghttp {
log_format customuseragent '[$time_local] $remote_addr $upstream_cache_status ' '$mobile_user $request_method ' '"$request_uri" $upstream_response_time';
然后在nginx虚拟主机配置中,可以自定义访问日志
access_log /var/log/nginx/customuseragent.log customuseragent;
重启nginx,然后可以查看自定义访问日志文件
tail -f /var/log/nginx/customuseragent.log
[04/Apr/2020:13:41:10 +0000] 123.119.135.210 MISS ZHANZHANGB_MOBILE GET "/" 0.272 [04/Apr/2020:13:41:11 +0000] 123.119.135.210 MISS ZHANZHANGB_MOBILE GET "/wordpress?lang=" 0.076 [04/Apr/2020:13:41:18 +0000] 123.119.135.210 - ZHANZHANGB_DESKTOP POST "/wp-admin/admin-ajax.php" 0.072 [04/Apr/2020:13:41:19 +0000] 86.101.236.78 HIT ZHANZHANGB_MOBILE GET "/" - [04/Apr/2020:13:41:20 +0000] 86.101.236.78 HIT ZHANZHANGB_MOBILE GET "/wordpress?lang=" - [04/Apr/2020:13:41:20 +0000] 86.101.236.78 MISS ZHANZHANGB_MOBILE GET "/851.html?is_single=" 0.112 [04/Apr/2020:13:41:23 +0000] 2804:1b2:81:b271:85d2:778c:a336:fd28 MISS ZHANZHANGB_DESKTOP GET "/851.html" 0.140 [04/Apr/2020:13:41:27 +0000] 2804:1b2:81:b271:85d2:778c:a336:fd28 HIT ZHANZHANGB_DESKTOP GET "/625.html?lang=" - [04/Apr/2020:13:41:27 +0000] 2804:1b2:81:b271:85d2:778c:a336:fd28 MISS ZHANZHANGB_DESKTOP GET "/625.html?is_single=808" 0.060 [04/Apr/2020:13:41:28 +0000] 10.164.151.46 MISS ZHANZHANGB_DESKTOP GET "/blog/" 0.144 [04/Apr/2020:13:41:30 +0000] 10.164.151.46 HIT ZHANZHANGB_DESKTOP GET "//blog/5?lang=" - [04/Apr/2020:13:41:30 +0000] 10.164.151.46 MISS ZHANZHANGB_DESKTOP GET "/blog/3?is_single=6539" 0.076