详谈nginx如何使用转发规则异步请求目标地址

提醒:本文最后更新于 2859 天前,文中所描述的信息可能已发生改变,请仔细核实。

瓜瓜Mr.小可的要求,详细(废话多一点)的说一下怎么解决相册请求的图片地址必须为本地,将其改为远程的办法。。。

改PHP什么的就不用我废话了,大家不用继续看下去了。。。本文不讲这个。

讲的是文章将相册请求转接到又拍云,并用ImageMagick压缩中有关如何将相册请求的本地地址,请求到又拍云。

我的相册是Imagevue,第一次看见他,是在SAM老哥那看到的。具体文件呢,也是SAM老哥慷慨提供(之前下的不知为毛不能用)。

这个相册不错,但是呢,只能请求本地文件夹,虽然偶带宽什么都是够多,但是也不想过多的图片在我的服务器上,而且又搞了又拍云(你妹的,又拍云就是为相册买的,有木有,不能用,搞毛啊),不能读取远程又拍云图片真是太坑爹了。

在上面那个传送门文章,我说了使用了nginx直接重定向向到又拍云,会使得Imagevue相册无法打开。悲剧。于是偶采用了另类办法。

Imagevue相册请求的图片地址是我的本地目录的/content/目录,里面还有小目录,细分是什么名字的相册。于是我利用nginx将所有请求到该目录的地址,一律转发到又拍云,为了不使得非图片文件转发到远程读取,我限定了,只有jpg|JPG才能读取,因为我里面只有jpg的图片,为毛有大小写呢?因为linux是区分大小写。

具体的nginx.conf是:

server {
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/,那么,同上,可得:

server {
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如何使用转发规则异步请求目标地址