admin 管理员组

文章数量: 887021


2024年1月17日发(作者:vscode配置环境)

Nginx图片缓存服务器配置

Nginx是目前非常流行的web服务器,它起源于俄罗斯。它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态资源的处理更佳,有测试证明是apache的30倍。现在已经广泛的应用于多家门户网站、中大型网站中,作为反向代理、图片缓存服务器等。

本例是结合张宴的blog(/nginx_cache/),做的变动。

主站是IIS7.5(192.168.36.70),用的是.net 3.5+sql 2005,用于处理aspx,ashx等动态网页程序,而网站的图片服务器为nginx(centos 5.6,IP:192.168.33.243).

1.网站结构

主站(iis 7.5)的网页结构为:

注意:myimages目录,是nginx图片服务器的主目录,放到这里作为一个虚拟目录的原因,是在centos上做了一个samba,让windows共享到这个目录,方便主站.net程序对图片上传和管理。更好的解决方案是,把所有的资源放到存储上。

Nginx图片服务器的目录结构为:

注意:images是nginx服务器的主目录,images1和images2是图片服务器的分支目录,用于存放图片,更专业的做法,是用当前月份命名目录,更加方便管理图片。proxy_cache_dir和proxy_temp_dir分别是作为nginx图片服务器的缓存目录和临时目录。用户只要访问一次图片,nginx就会把图片缓存到proxy_cache_dir目录底下。

2.nginx图片服务器配置

1. centos5.6上安装nginx.安装步骤如下:

wgetftp:///pub/software/programming/pcre/

tar zxvf

cd pcre-8.00/

./configure

make && make install

cd ../

wget/files/ngx_cache_

tar zxvf ngx_cache_

wget/download/

tar zxvf

cd nginx-0.8.32/

./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0

--prefix=/usr/local/webserver/nginx

--with-http_ssl_module

make && make install

cd ../

注意:要建立www用户和www用户组

--with-http_stub_status_module

2. 配置nginx的配置文件

注意nginx的图片服务器访问地址为:192.168.33.243:8080,nginx缓存服务器为:192.168.33.243,故我们需要在Nginx上配置两个web服务器,让后一个缓存前一个,iis主站的程序直接调用缓存服务器的图片,绕过了真实的图片服务器。

配置文件如下:

user wwwwww;

worker_processes 8;

error_log /usr/local/webserver/nginx/logs/nginx_ crit;

pid /usr/local/webserver/nginx/;

#Specifies the value for maximum file descriptors that can be opened by this

process.

worker_rlimit_nofile 65535;

events

{

use epoll;

worker_connections 65535;

}

http

{

include ;

default_type application/octet-stream;

charset utf-8;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 300m;

sendfile on;

tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

client_body_buffer_size 512k;

proxy_connect_timeout 5;

proxy_read_timeout 60;

proxy_send_timeout 5;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.1;

gzip_comp_level 2;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

proxy_temp_path /data0/proxy_temp_dir;

#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

#upstream backend_server {

# server 192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;

#server 192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;

#server 192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;

#}

server//此处为缓存服务器

{

listen 80;

server_name 192.168.33.243;

location /

{

proxy_cachecache_one;

#对不同的HTTP状态码设置不同的缓存时间

proxy_cache_valid 200 304 12h;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

proxy_cache_key $host$uri$is_args$args;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass192.168.33.243:8080;//此处跳转到真实的图片服务器

log_format cache '***$time_local '

'$upstream_cache_status '

'Cache-Control: $upstream_http_cache_control '

'Expires: $upstream_http_expires '

'"$request" ($status) '

'"$http_user_agent" ';//定义日志格式(此日志格式可以显示hit miss等,显示缓存是否被击中,老版本默认可以,但是新版本,发现需要加上这个)

access_log /var/log/nginx/ cache; //使用这个日志格式

expires 1d;

}

#用于清除缓存,假设一个URL为192.168.8.42/,通过访问192.168.8.42/purge/就可以清除该URL的缓存。

location ~ /purge(/.*)

{

#设置只允许指定的IP或IP段才可以清除URL缓存。

allow 127.0.0.1;

allow 192.168.0.0/16;

deny all;

proxy_cache_purge cache_one $host$1$is_args$args;

}

#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。

location ~ .*.(php|jsp|cgi)?$

{

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass backend_server;

}

access_log off;

}

server//真实的图片服务器

{

Listen 8080;

Server_name 192.168.33.243;

Location /

{

root /images/;

}

access_log /***/*** combined; //访问日志,一般都off掉。

}

}


本文标签: 图片 缓存 服务器