nginx架设一个高效的缓存转发的例子

发布时间:2020-05-13编辑:脚本学堂
项目情况:用户上传的音乐需在播放,音乐量比较大。同时用户上传的音乐命不会重名,不用过期。用Squid和Varnish在高负载时,会出现无响应的现象。内网流量较大。

项目情况:
用户上传的音乐需在播放,音乐量比较大。同时用户上传的音乐命不会重名,不用过期。
用Squid和varnish在高负载时,会出现无响应的现象。内网流量较大。

nginx说明:
以前用F5觉的比较牛的就是可以缓存转发,感觉功能挺牛的。没钱买F5,只好用Nginx顶一把了。nginx可以说不算一个Cache,他不存在过期的问题。
也可以和负载均衡在一台机器上.
机器的硬盘要大一点。根据数据大小来定吧。

利用404,405的处理方法.
定义后端的Server,按分组的概念:
 

复制代码 代码如下:
  upstream music_ser{
                server 172.16.100.10:80 weight=1;
                server 172.16.100.11:80 weight=1;
}
 

定义一个Server:
 

复制代码 代码如下:
server {
        listen 80;
        server_name music.wubx.com;
        access_log  /data/logs/music_access.log
        proxy_temp_path /data/Cache/temp;
        root /data/Cache/$host;
        location / {
                index index.php;
                error_page 404 = /fetch$uri;
        }
        location /fetch {
                internal;
                proxy_pass http://music_ser;
                proxy_store on;
                proxy_store_access user:rw group:rw all:rw;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Via "nginx";
                alias /data/Cache/$host;
        }
}

完成配置nginx.conf
 

复制代码 代码如下:

user  nobody;
worker_processes  1;
error_log  /data/logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream
        sendfile        on;
        keepalive_timeout  65;
upstream music_ser{
     server 172.16.100.10:80 weight=1;
     server 172.16.100.11:80 weight=1;
}
server {
        listen 80;
        server_name music.wubx.com;
        access_log  /data/logs/music_access.log
        proxy_temp_path /data/Cache/temp;
        root /data/Cache/$host;
        location / {
                index index.php;
                error_page 404 = /fetch$uri;
        }
        location /fetch {
                internal;
                proxy_pass http://music_ser;
                proxy_store on;
                proxy_store_access user:rw group:rw all:rw;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Via "nginx";
                alias /data/Cache/$host;
        }
}
}
 

用一个脚本去除理常放置时间长的文件:
 

复制代码 代码如下:
#!/bin/bash
mkdir /data/Cache
mkdir /data/Cache/temp
chown -R nobody:nobody /data/Cache
fine /data/Cache/$host -type -atime 30 |xargs rm -rf {}
 

$host换成你域名
根据路径在做调整,加到Cron中吧。