在vps上搭建nginx+twip

apache上搭建twip也试过,不过apache不愧是个吃资源的大户,于是准备改用nginx。网上搜了把发现还是很简单的,以下内容在原来的基础上略有修改。 1.安装需要的包

apt-get install curl libcurl3 libcurl3-dev

2.安装php组件

apt-get install php5-cli php5-cgi php5-curl spawn-fcgi

在最后添加:cgi.fix_pathinfo=1修改配置项:/etc/php5/cgi/php.ini 3.安装nginx组件

apt-get install nginx

4.启动php服务

1
2
killall -HUP php-cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

5.配置nginx的配置文件,这里面需要注意下,有几个地方略作了修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen   443;
    server_name  twip.somename.com:443;
    root   /var/www;

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php last;
        }
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include    fastcgi_params;
    }

    location ~ /\.ht {
    deny  all;
    }
}

注意,因为我使用了加密连接,所以这里我监听的是443端口,server_name是你的域名root和fastcgi_param里的路径和你的api路径一致,我的是直接放在网站根目录下,如果你是放在yourdomain.com/twip下的话 可以改成/var/www/twip。 这段配置还有一个需要注意的地方就是要放在nginx.conf的http节点里面。由于我配置了ssl加密连接,所以还需要配置下相关证书。 在http节点里server节点外面加上配置好的证书路径即可。

ssl on;
ssl_certificate /etc/nginx/conf/ssl-unified.crt;
ssl_certificate_key /etc/nginx/conf/ssl.key;

关于证书的配置方法,因为我用的是startssl的免费证书,所以具体的方法可以看看他们的faq,非常简单。 最后就是部署twip了,这个也非常简单,到code.google.com上down下代码把config.php里的consume_key之类的填一下上传即可。 最后重启下nginx看看,/etc/init.d/nginx restart。   以上文章大部分参考的是在vps上搭建nginx+twip,在此借用希望不介意。

开启Apache的headers和expires模块

Header 和 Expries 是用来控制浏览器的缓存控制模块,通过开启该模块并进行一定的设置可以有效加速网站减少请求数和数据流量。

一般我们可以通过设置 HTTP 响应的 Head 中的 expired 和 cache-control 来控制页面在浏览器中的缓存 例如: Cache-Control: max-age=1800 Expires: Wed, 18 May 2012 21:00:00 GMT 缓存最大时长为1800秒,设定的过期时间为2012-05-18 21:00:00 Apache开启这两个模块非常简单(Debian环境) a2enmod headers a2enmod expries 开启后重启下apache即可。 如何充分利用这两个模块,关键在于配置。该配置可以配置到.htaccess文件下也可以在apache的网页控制文件下加入 我是直接在配置文件 /etc/apache2/sites-enabled/000-default文件里配置的

# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# these are pretty far-future expires headers
# they assume you control versioning with cachebusting query params like
#   <script src="application.js?20100608">
# additionally, consider that outdated proxies may miscache 
#   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# if you don't use filenames to version, lower the css and js to something like
#   "access plus 1 week" or so

<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
  ExpiresByType text/cache-manifest       "access plus 0 seconds"

# your document html 
  ExpiresByType text/html                 "access plus 0 seconds"

# data
  ExpiresByType text/xml                  "access plus 0 seconds"
  ExpiresByType application/xml           "access plus 0 seconds"
  ExpiresByType application/json          "access plus 0 seconds"

# rss feed
  ExpiresByType application/rss+xml       "access plus 1 hour"

# favicon (cannot be renamed)
  ExpiresByType image/x-icon              "access plus 1 week" 

# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"
  ExpiresByType video/ogg                 "access plus 1 month"
  ExpiresByType audio/ogg                 "access plus 1 month"
  ExpiresByType video/mp4                 "access plus 1 month"
  ExpiresByType video/webm                "access plus 1 month"

# htc files  (css3pie)
  ExpiresByType text/x-component          "access plus 1 month"

# webfonts
  ExpiresByType font/truetype             "access plus 1 month"
  ExpiresByType font/opentype             "access plus 1 month"
  ExpiresByType application/x-font-woff   "access plus 1 month"
  ExpiresByType image/svg+xml             "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

# css and javascript
  ExpiresByType text/css                  "access plus 1 year"
  ExpiresByType application/javascript    "access plus 1 year"
  ExpiresByType text/javascript           "access plus 1 year"

  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>

</IfModule>

这是.htaccess下的一段配置代码,如果是在000-default文件下配置,则直接将中间的那段代码加入到
文件开头

<VirtualHost *:443> /*

ExpiresActive on
ExpiresDefault

*/ ServerAdmin webmaster@localhost ….. 关于expires的配置说明: ExpiresActive 指令:打开或关闭产生”Expires:”和”Cache-Control:”头的功能。 ExpiresByType 指令:指定MIME类型的文档(例如:text/html)的过期时间。 ExpiresDefault 指令:默认所有文档的过期时间。 过期时间的写法: “access plus 1 month” “access plus 4 weeks” “now plus 30 days” “modification plus 5 hours 3 minutes” A2592000 M604800 access、now及A 三种写法的意义相同,指过期时间从访问时开始计算。 modification及M 的意义相同,指过期时间是以被访问文件的最后修改时间开始计算。 所以,后一种写法只对静态文件起作用,而由脚本生成的动态页面不受它的作用。