Linode VPS with Nginx的进一步优化

  • 清理系统服务

    可以关闭不必要的系统服务,linux下常用chkconfig,在ubuntu系统上最常用sysv-rc-conf,界面更友好使用更方便,直接通过源安装即可运行。

    sudo apt-get install sysv-rc-conf
    sudo sysv-rc-conf
    

    通过软件可以发现,Linode提供的系统已经关闭了很多不必要的服务,但是系统自带了apache,直接取消选择关闭即可。

  • nginx过期设置

    在nginx中,可以对部分类型资源配置过期时间,以利用客户端缓存,降低服务器端负载,某些媒体资源可以禁用log。

    在对应的nginx配置文件youdomain.com中添加

    location ~* ^.+\.(gif|jpg|jpeg|png|bmp|ico|swf)$ {
        root /home/myname/wwwroot/yourdomain.com;
        access_log off;
        expires 7d;
    }
    location ~* ^.+\.(js|css)$ {
        root /home/myname/wwwroot/yourdomain.com;
        expires 24h;
    }
    
  • wordpress静态化

    cos-html-cache是WP的静态化插件,他可以将WP通过UrlRewrite优化过的Url链接彻底静态化。你只需要在WP后台设置固定链接为某种静态文件类似的形式(例如/archives/%post_id%.html),你就可以使用该插件生成对应的静态文件,从此用户将直接访问此静态文件,而不必再通过php解释,极大提高运行效率。

    具体操作上面链接描述很详细,无需赘述。

    不过我在启用此插件后,发现能正常生成网站根目录下index.html,但无法生成/archives/%post_id%.html。我写了一个php脚本放在网站根目录下测试,也无法在/archives目录下生成文件,提示找不到该目录。在cos-html-cache源文件中可以找到,生成html文件的脚本,路径信息是通过$_SERVER[“DOCUMENT_ROOT”]获取的,但是尝试打印该值发现无值。最后我发现必须在Nginx站点配置文件中在php-fast-cgi的配置项里增加网站的root路径如下

    location / {
        root   /home/myname/wwwroot/yourdomain.com;
        index  index.html index.htm index.php;
        if (-f $request_filename) {
            break;
        }
        if (-d $request_filename) {
            break;
        }
        rewrite ^(.+)$ /index.php?q=$1 last;
    }
    location ~ \.php$ {
        #必须定义root -----------------------------------------
        root   /home/myname/wwwroot/yourdomain.com;
        #------------------------------------------------------
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  /home/myname/wwwroot/yourdomain.com$fastcgi_script_name;
        include     /usr/local/nginx/conf/fastcgi_params;
    }
    
    

    如果不添加该root信息,在php中则无法正确获取$_SERVER[“DOCUMENT_ROOT”]参数,会导致路径定位错误。不过按照一般逻辑,这个应该是继承前面的root设置,不必重复定义。也许是因为fastcgi是从nginx转向到另一个新的进程的缘故,所以需要具体定义参数传递。不过nginx应该自动获取该值,避免重复手工操作。