背景
最近为athbe.cn
添加了一个网盘应用cloud.athbe.cn
,顺便加上了Cloudflare。但是在测试的时候发现邮件无法发送。
我的博客网站使用WordPress搭建,为了实现异步发送邮件,我使用了Mail Queue
插件,该插件会通过WP Cron
实现定时发送队列中的邮件。开启Cloudflare后,队列中的邮件无法发送。进一步排查原因后,发现所有WP-Cron任务都失效了。
根本原因
WP-Cron通过定时访问/wp-cron.php
来实现定时任务,开启Cloudflare后,服务器访问域名需要再次经过Cloudflare的路由,导致响应速度非常慢(即使这个资源就在本地),最终超时了。
也许服务器在境外的话就不需要考虑这个问题?
解决方案
网上找到的资料全是AI生成的废话,找到问题的根源花了我不少时间。既然问题的根源已经确定,解决方案就很简单了,修改服务器的host文件,使其访问目标域名时绕过Cloudflare就好了。
编辑/etc/hosts
sudo nano /etc/hosts
在其中加入下面的内容。
xxx.xxx.xxx.xxx example.com #替换为实际的IP和域名
#或者更激进一点,直接修改为本地回环地址,这样应该会更快
#127.0.0.1 example.com
此时服务器在访问目标域名时,就不会经过Cloudflare,WP-Cron可以正常工作了。
Comments 2 条评论
最后还是换了腾讯的CDN
@athbe1337 怎么给我干新加坡去了