提醒:本文最后更新于 2859 天前,文中所描述的信息可能已发生改变,请仔细核实。
应瓜瓜和Mr.小可的要求,详细(废话多一点)的说一下怎么解决相册请求的图片地址必须为本地,将其改为远程的办法。。。
改PHP什么的就不用我废话了,大家不用继续看下去了。。。本文不讲这个。
讲的是文章《将相册请求转接到又拍云,并用ImageMagick压缩》中有关如何将相册请求的本地地址,请求到又拍云。
我的相册是Imagevue,第一次看见他,是在SAM老哥那看到的。具体文件呢,也是SAM老哥慷慨提供(之前下的不知为毛不能用)。
这个相册不错,但是呢,只能请求本地文件夹,虽然偶带宽什么都是够多,但是也不想过多的图片在我的服务器上,而且又搞了又拍云(你妹的,又拍云就是为相册买的,有木有,不能用,搞毛啊),不能读取远程又拍云图片真是太坑爹了。
在上面那个传送门文章,我说了使用了nginx直接重定向向到又拍云,会使得Imagevue相册无法打开。悲剧。于是偶采用了另类办法。
Imagevue相册请求的图片地址是我的本地目录的/content/目录,里面还有小目录,细分是什么名字的相册。于是我利用nginx将所有请求到该目录的地址,一律转发到又拍云,为了不使得非图片文件转发到远程读取,我限定了,只有jpg|JPG才能读取,因为我里面只有jpg的图片,为毛有大小写呢?因为linux是区分大小写。
具体的nginx.conf是:
listen 11314;
server_name default;
index index.php;
root /data/album;
location ~ /content/.*\.(JPG|jpg)$ {
expires 30d;
rewrite ^/content/(.*)$ /content/$1 break;
proxy_pass http://kn007.b0.upaiyun.com;
}
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
access_log off;
}
当然啦,要是图片有显示必须确保http://kn007.b0.upaiyun.com/content/是存在并且按照规定放置图片的。
大概请求示意图:
这样就ok了。。。据说ngg请求本地目录是/wp-content/gallery/,那么,同上,可得:
listen 11314;
server_name default;
index index.php;
root /data/album;
location ~ /wp-content/gallery/.*\.(JPG|jpg)$ {
expires 30d;
rewrite ^/wp-content/gallery/(.*)$ /ngg/$1 break;
proxy_pass http://kn007.b0.upaiyun.com;
}
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
access_log off;
}
确保http://kn007.b0.upaiyun.com/ngg/是存在并且按照规定放置图片的就ok了。
因此,ngg的请求也异步到了又拍。。。
使用异步定向,也就是保持了原始地址读取,实际由指定地址读取内容。(这样的话,对本身主机响应请求速度有要求,图片不耗本机流量,请求的流量很小,可忽略不计)。
最后还是提提偶的相册地址 album.kn007.net
转载请注明转自:kn007的个人博客的《详谈nginx如何使用转发规则异步请求目标地址》