nginx 413 Request Entity Too Large 错误解决方法

今天在网站上传文件时,出现这个错误

413 Request Entity Too Large 

解决办法是打开nginx主配置文件nginx.conf,找到http{}段,修改或者添加下面的字段

client_max_body_size 30m;

然后重启nginx

./reload.sh

顺便贴一下我的 nginx.conf 配置文件的 http 设置。

http {
    access_log off;
    log_format default_format '$time_iso8601|$remote_addr|$request_method|$status|$request_length|$request_time|$http_referer|$http_user_agent|$request_uri';

    fastcgi_cache_path /var/local/nginx/fastcgi_cache/one_hour keys_zone=fastcgi_1h:16m levels=1:2 inactive=1h max_size=1g;

    limit_conn_zone $binary_remote_addr zone=conn_perip:16m;
    limit_req_zone $binary_remote_addr zone=req_perip:16m rate=2r/s;

    limit_rate_after 2048k;
    limit_rate  512k;

    client_header_timeout 8s;
    client_body_timeout 8s;
    client_max_body_size 32m;

    server_names_hash_bucket_size 64;

    gzip on;
    gzip_min_length 16384;
    gzip_types text/javascript text/css text/xml text/plain application/json application/x-javascript application/xml;

    include       mime.types;
    sendfile      on;

    keepalive_timeout  30 30;

    upstream services {
        server localhost:8090;

        keepalive  16;
    }

    include vhost/*.conf;
}

Mac 下 MySQL 安装以及 phpmyadmin 配置

MySQL 安装

安装 MySQL 有很多种方式,包括 源代码安装、homebrew安装、还有直接下载dmg安装包安装。

一切从简把,直接在官网上下载 dmg 文件,双击安装。https://dev.mysql.com/downloads/mysql/

一路无脑安装即可。在系统偏好里开启。 一般还是不要开机自启动,因为 mysql 比较耗内存,像我这的 air 就比较吃力了。

phpmyadmin 配置

phpMyAdmin. 由php开发的一个 MySQL 管理工具。在官网上下载源代码:https://www.phpmyadmin.net/downloads/

下载到本地后把文件 「config.sample.inc.php」 拷贝一份,重命名为 「config.inc.php」

找到这一行:

$cfg['Servers'][$i]['host'] = 'localhost';

改为:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

配置好 nginx/apache,就能够跑起来了。 我用的是 IDEA 自带的配置,就不那么费神了。下面是IDEA中的配置方法,可以做个参考。


阿里云服务器的安全组设置小坑

阿里云的活动不断,几乎任何时间都能看到他们在搞活动。最近阿里云国际正在搞『SSD云服务器爆款低至1.6折,年付30美元,月送1TB流量包!』 的活动, 顺手入了一台美西硅谷服务器。按照我以往使用阿里云的经验,买完之后就开箱即用了。按照惯例运行好服务器运维的脚本,陆续开启各种服务了。

让我意外的是在其他服务器上可以使用的一些自定义接口,阿里云上始终没法连接上。

一开始也没有多想,以为是自己哪里没配置好。毕竟脚本也是边写边改的,出现问题也正常。安装几次还是不成功。谷歌之后终于有了方向——还有个安全组策略 ——前几天介绍的idcf 也是如此。然而不一样的是,idcf 是完全没有配置任何东西,所以一开始连 ssh 都是没办法连上的。

相比之下阿里云的防火墙策略就『智能』了很多——ssh 和 80 端口都给你开了,偏偏就是不给你开其他端口,让你连不上的时候干着急 Orz = =。

于是问题解决,修改安全组里的规则即可。入口和出口都要设置:


Debian 下 PHP7 编译安装和 MySQL支持

在 php7 环境中,编译和支持MySQL这一块把我折腾的蛮辛苦的,相信不少人也同样遇到,记录一下这个坑。

不知道从哪一版本开始,PHP不在希望使用mysql的库来支持mysql的连接,启用了mysqlnd来支持,编译都没有了–with-mysql参数,只支持–with-mysqli和–with-pdo-mysql,可以通过查看configure的参数来知道:

./configure -help | grep mysql

  --with-mysqli=FILE      Include MySQLi support.  FILE is the path
                          to mysql_config.  If no value or mysqlnd is passed
  --enable-embedded-mysqli
  --with-mysql-sock=SOCKPATH
  --with-pdo-mysql=DIR    PDO: MySQL support. DIR is the MySQL base directory
                          If no value or mysqlnd is passed as DIR, the
  --enable-mysqlnd        Enable mysqlnd explicitly, will be done implicitly
  --disable-mysqlnd-compression-support
                          Disable support for the MySQL compressed protocol in mysqlnd
  --with-zlib-dir=DIR     mysqlnd: Set the path to libz install prefix

可以看到,PHP希望使用mysqlnd来支持MySQL,所以参数可以这样写:

–enable-mysqlnd

–with-mysqli=mysqlnd

–with-pdo-mysql=mysqlnd

列一下我的 config 参数:

./configure --prefix /usr/share/php7  \
    --enable-fpm  \
    --enable-mysqlnd  \
    --enable-gd-native-ttf \
    --enable-mbstring \
    --enable-zip \
    --enable-calendar \
    --enable-bcmath \
    --enable-exif \
    --enable-intl \
    --enable-opcache  \
    --enable-shmop \
    --enable-soap \
    --enable-sockets \
    --with-fpm-user=www-data  \
    --with-fpm-group=www-data  \
    --with-pcre-regex \
    --with-kerberos  \
    --with-openssl \
    --with-mcrypt \
    --with-zlib \
    --with-bz2 \
    --with-curl \
    --with-gd \
    --with-jpeg-dir=/usr/include/jpeg8  \
    --with-png-dir=/usr/include/libpng12  \
    --with-gettext \
    --with-gmp \
    --with-mhash \
    --with-pgsql \
    --with-pdo-pgsql \
    --with-mysqli \
    --with-pdo-mysql=mysqlnd \
    --with-xsl

参考资料


idcf 购买记录

idcf 是个云主机服务商。最近朋友推荐,入手一个试了一下,因为和 AWS、青云 的配置思路比较接近,不是常见的购买即可用的那种类型,初学者经常不知所措。

下面记录一下我的使用过程,有人掉坑的时候可以在这篇文章找到原因。

简介

idcf 提供的亚洲区VPS包括:日本东部1、日本东部2、日本西部。在申请账号并即将创建VPS的时候,会提示你选择区域。

我试用了东区1和东区2,整体来说差不多,东区2是新建的机房,对比之后选了东区1,速度稍快一点点。

VPS参数

1G内存版

CPU:E5-2680 v2 @ 2.80GHz 1核
内存:1G
硬盘:SSD固态硬盘 15G
流量:3TB/月
带宽:2Gbps
IP:x1
构架:KVM
价格:日本VPS 500日元/月(约等于27.15人民币)

关于 CPU 主频可以略去不看。CPU频率限制800Mhz,编译一遍 PHP 要花1个小时,你的良心不会痛吗?

注册及验证

注册地址:www.idcf.jp

现在注册有一个6个月免费试用的活动,还可以。

跟朋友要了日本的手机号码进行注册。实际上用中国的好像也是可以的。

建立VPS及绑定IP

  1. 登陆管理后台之后,根据你自己的喜好选择日本的地区。然后点击“Computing”中的“Active”来进入创建页面

  2. 点击左上角的“LAUNCH VM”进行创建。

  3. 选择你需要的系统。idcf 只支持密钥登陆。

  4. 创建成功之后。

这里要重点讲一下,到这个界面我就晕了,ip 也ping 不通,不知道怎么办。查了资料就理解了,需要在 IP 选项卡那里配置防火墙和转发条件。

这层级折叠的有点深啊2333333

至此,VPS就建立完毕了。

体验

性能确实不行,限制 800MHz 的主频,简直要死人了。其他的还在体验中。