今天,一个朋友叫我帮忙在LINUX下搭建同步工具,开始我是想用rsync的,但是具体了解了情况以后,我决定用NGINX的反向代理。我朋友有个网站www.ileiming.com是放在国外的,他想让这个站的图片用国内的服务器(img.abc.com),如果单纯用NGINX的反向代理功能,用户每次访问这个站的时候,缓存服务器(这里就是img.abc.com所在的服务器)就会每次都去国外的站点上取出图片,这样反而会让图片打开的速度很慢,所以后来完善NGINX的反向代理,把访问过的图片都保存到缓存服务器上,这样第一次会比较慢,但以后用户访问图片的时候,都是从国内服务器上调用的,而不会再去国外服务器上了。在缓存服务器上具体NGINX的配置如下:
server {
include /usr/local/nginx/conf/port.conf;
server_name img.abc.com;
root /www/img.abc.com;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
root /data/www/img.abc.com;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /www/img.abc.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if (!-e $request_filename)
{
proxy_pass http://img.ileiming.com; #后端服务器ip地址或域名
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
log_format img.abc.comlog ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” $http_x_forwarded_for’;
access_log logs/img.abc.com.log img.abc.comlog;
}
设置完了,保存img.abc.com.conf文件,并重启NGINX,这样,img.abc.com就会在用户第一次访问www.ileiming.com网站图片的时候自动去www.ileiming.com的服务器上去抓去图片并保存到缓存服务器上了