解决WordPress耗尽可允许分配内存的问题

最近想要在博客中增加 Google AdSense,安装了 WordPress 插件,打开博客管理后台时,一直加载不出来。以为开了代理的问题,关掉代理,发现依然打不开。猜想可能是安装的插件有问题,导致加载失败。登录到服务器,查看 nginx 的日志。

在 nginx 的 error.log 发现了如下信息 FastCGI sent in stderr: “PHP message: PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 32768 bytes) 。

继续阅读

MacOS编译NGINX1.17

使用Mac的开发者大多数的时候通过 brew 命令安装各类软件,比如 PHP、Python、Nodejs,Nginx 也不例外。

默认情况下Nginx安装在/usr/local/Cellar/nginx,通过brew link nginx加软连接到/usr/local/bin/nginx,虽然这样完全满足开发且符合 Mac 软件的管理,但是却不方便移植(比如想给不懂开发的用户一键部署部署的应用包,做私有化部署的同学应该对此不陌生)。

从源码编译 NGINX 程序比安装预编译的安装包要灵活很多,可以添加特定的模块(来自NGINX官方或者第三方的,比如给 Fastdfs 提供 HTTP 访问文件能力的 fastdfs-nginx 模块),当然自己编译源码拉取的可以是已修复 bug 和新增特性的最新分支。

继续阅读

Nginx截断response的body

在前后端分离实践中,借助于nginx的反向代理,既能解决负载问题,也能解决跨域问题,是一个完美的实现方案。最近解决写了一个多级菜单列表的接口,数据大小有200k。通过ip访问,返回数据是完整的,但是通过代理域名访问,返回只有60-80k之间的数据。

查询Nginx的error.log日志,发现下面的错误:

2017/04/26 18:27:46 [crit] 19851#0: *867217 open() “/var/lib/nginx/proxy/6/68/0000001686” failed (13: Permission denied) while reading upstream, client: 10.71.253.194, server: admin-develop.xxx.cc, request: “GET /v2/menu/list HTTP/1.1”, upstream: “http://127.0.1.1:40212/router/menu/list”, host: “admin-develop.xxx.cc”

继续阅读