Nginx分开代理缓存WordPress网站的移动端与PC端页面

如果WordPress不是完全的响应式设计,也就是说移动端访问的内容与PC端访问的内容不完全一致时,可能希望将服务器端 nginx 缓存分开,由浏览器确定使用移动端或PC端(桌面)的缓存。本文将介绍如何配置 nginx fastcgi 或反向代理缓存,以便为移动端和桌面端分开缓存。

如果WordPress不是完全的响应式设计,也就是说移动端访问的内容与PC端访问的内容不完全一致时,可能希望将服务器端 nginx 缓存分开,由浏览器确定使用移动端或PC端(桌面)的缓存。本文将介绍如何配置 nginx fastcgi 或反向代理缓存,以便为移动端和桌面端分开缓存。

谷歌帮助我找到了一个用户代理字符串列表,这相当完整,所以用这个作为分离移动,平板电脑,手持和桌面的判断基础。

我们将使用 nginx 指令来检测用户代理并将其归到移动和桌面分类中。

然后,我们将使用变量并调整缓存(相关教程请阅读前文:为Apache配置Nginx反向代理WordPress缓存), 或使用 nginx.proxy_cachefastcgi_cache

下面是判断指令:

# 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 \"/2020-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 \"/2020-851.html\" 0.140
[04/Apr/2020:13:41:27 +0000] 2804:1b2:81:b271:85d2:778c:a336:fd28 HIT ZHANZHANGB_DESKTOP GET \"/2020-625.html?lang=\" -
[04/Apr/2020:13:41:27 +0000] 2804:1b2:81:b271:85d2:778c:a336:fd28 MISS ZHANZHANGB_DESKTOP GET \"/2020-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

原创文章,作者:站长帮,如若转载,请注明出处:https://www.davidwu.net/archives/244

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买