Techyou labs
真正的爱应该超越生命的长度、心灵的宽度、 灵魂的深度
常用标签
您正在查看:2010年5月
May 24, 2010

官方详细参数:http://wiki.nginx.org/NginxHttpProxyModule

1、传统缓存之一(404)

这个办法是把nginx的404错误定向到后端,然后用proxy_store把后端返回的页面保存。

location / {
    root /home/html/;#主目录
    expires 1d;#网页的过期时间
    error_page 404 =200 /fetch$request_uri;#404定向到/fetch目录下
    }

    location /fetch/ {#404定向到这里
    internal;#指明这个目录不能在外部直接访问到
    expires 1d;#网页的过期时间
    alias /home/html/;#虚拟目录文件系统地址要和locaion /一致,proxy_store会将文件保存到这目录下
    proxy_pass http://xok.la/;#后端upstream地址,/fetch同时是一个代理
    proxy_set_header Accept-Encoding '';#让后端不要返回压缩(gzip或deflate)的内容,保存压缩后的内容会引发乱子。
    proxy_store on;#指定nginx将代理返回的文件保存
    proxy_temp_path /home/tmp;#临时目录,这个目录要和/home/html在同一个硬盘分区内
    }

使用的时候还有要注意是nginx要有权限往/home/tmp和/home/html下有写入文件的权限,在linux下nginx一般会配置成 nobody用户运行,这样这两个目录就要chown nobody,设成nobody用户专用,当然也可以chmod 777,不过所有有经验的系统管理员都会建议不要随便使用777。

配置文件:

location / {
root html/$host;
index index.html index.htm;
}

只要把root的具体目录用内部变量$host代替

然后再html目录下建立和域名相同的目录作为虚拟站点的根目录:
cd html
mkdir site[1-9].xxx.com

这样就基本实现了apache的vhost模块的功能。

新增站点的时候只要在html目录下建立一个以站点域名为目录名的目录作为新站点的根目录,把文件直接拷进该目录,不用改配置文件,不用重启nginx
新站点立即生效。

已经在centos5.3 和nginx 0.7.65 上测试通过。