国内服务器WordPress无法更新

转载自我的博客国内服务器WordPress无法更新

原因分析

近期国内(包括中国大陆及港澳台地区)执行任何有关插件、主题、核心的升级 / 安装时均会提示「429 Too Many Requests」导致操作失败。具体原因为 download.wordpress.org  遭受了来自国内的大流量攻击从而面向国内的 CDN 服务停摆。

该问题已持续数月,在很大程度上阻碍了国内网站正常更新 WordPress 核心及相关周边产品,站点安全性得不到任何保障。WordPress 官方尚未采取措施,具体讨论可见:Is wordpress.org restricting visits from China region

解决方案

已失效

网上大多解决方案为

打开 wp-config.php 文件,在底部增加以下代码:

define('WP_PROXY_HOST', 'us.centos.bz');
define('WP_PROXY_PORT', '31281');

该方法现已失效,添加到WP中会导致无网络

实际方案

最后找到一个付费的 WordPress 更新镜像(9.9元) 见https://www.nicetheme.cn/wordpress-api-wordpress-429-too-many-request.html

非广告,如果你有自己的海外服务器的话(我的已经过期了,所以就直接用现成的了),可以自己搭建,大致如下(本站未测试):

解决无法升级的终极大招:国外服务器上自建https网页代理

1. 在国外服务器上(假如IP是:123.123.123.123)给nginx配置https

参考步骤:http://pony.hk/?p=216

2. 在国外服务器上做https网页代理,很简单,站点conf文件内容配置如下:

server {
listen 443;
ssl on;
ssl_certificate key/server.crt;
ssl_certificate_key key/server.key;
server_name downloads.wordpress.org;location / {
index index.php index.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer https://downloads.wordpress.org;
proxy_set_header Host downloads.wordpress.org;
proxy_pass https://downloads.wordpress.org;
proxy_set_header Accept-Encoding "";
}
}

3. 在国内服务器上,把php.ini和php-fpm.conf参数由30改为3000,另外要自定义域名解析,在/etc/hosts文件中添加一条国外服务器的解析记录:123.123.123.123 downloads.wordpress.org

4. 因为这时候wordpress去访问的下载站点,实际上证书是错误的,要设置ssl不验证证书。方法:在wordpress当前模板的functions.php文件中加入如下代码:

add_action('http_request_args', 'jkudish_http_request_args', 10, 2);
function jkudish_http_request_args($args, $url) {
$args['sslverify'] = false;
return $args;
} // 解决php https签名错误

5. 后台升级更新

6. 把php.ini和php-fpm.conf参数由3000改回30,结束!

你可能感兴趣的:(wordpress)