原因分析
近期国内(包括中国大陆及港澳台地区)执行任何有关插件、主题、核心的升级 / 安装时均会提示「429 Too Many Requests」导致操作失败。具体原因为 download.wordpress.org 遭受了来自国内的大流量攻击从而面向国内的 CDN 服务停摆。
解决方案
网上大多解决方案为
打开 wp-config.php 文件,在底部增加以下代码:
define('WP_PROXY_HOST', 'us.centos.bz'); define('WP_PROXY_PORT', '31281');
该方法现已失效,添加到WP中会导致无网络
非广告,如果你有自己的海外服务器的话(我的已经过期了,所以就直接用现成的了),可以自己搭建,大致如下(本站未测试):
解决无法升级的终极大招:国外服务器上自建https网页代理
1. 在国外服务器上(假如IP是:123.123.123.123)给nginx配置https
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,结束!