2
回答
nginx 如何开发upstream插件来重定位拉取图片
华为云4核8G,高性能云服务器,免费试用   
小妹想实现web端通过访问nginx服务器代理,来从http图片服务器拉取图片;图片名称是使用base64加密过的,里面包含图片所在http服务器的地址和端口;所以打算开发一个插件来实现,先解密图片名称,然后重定向到目标服务器获取图片。问题来了,解密完图片名称获取到目的图片服务器地址之后,不知道怎样实现重定位?网上找了挺多资料,但类似案例几乎没找到,现在在看upstream模块的编码,对于服务器地址的重定位没有找到一个可行的方案,特来求助大神们,希望能得到一点方向,谢谢了!!!
举报
不懂佳
发帖于2年前 2回/195阅
共有2个答案 最后回答: 2年前
proxy_cache_path /data/cache/sipmle_cache1 levels=1:2 keys_zone=sipmle_cache1:20m max_size=5g inactive=240h;

server {
    listen       80;
    server_name  img.simple.com;
    location /g/ {

        set $base_encode "";
        set $base_decode "";
        set $hostx "";
        set $addrs "";

        if ($uri ~ "^/g/(.+)$") {
                set $base_encode $1;
                set_decode_base64 $base_decode $base_encode;
        }

        if ($base_decode ~ "^http[s]?./+([^/]+)/(.+)$") {
                set $hostx $1;
                set $addrs $2;
        }

        resolver 114.114.114.114;

        proxy_pass http://$hostx/$addrs;
        proxy_set_header referer "http://$hostx";
        proxy_cache simple_cache1;
        proxy_cache_valid 168h;
        proxy_ignore_headers Set-Cookie Cache-Control;
        proxy_hide_header Cache-Control;
        proxy_hide_header Set-Cookie;
    }
}

搞这么复杂干嘛,你说的是图片代理吧,试试这个。依赖base64那个扩展


非常感谢您的解答!最近比较忙,非常抱歉没即时给以反馈! 您给的方向我查了一下相关资料,能够行的通!虽然现在还在调试,但是方向明确了!谢谢大神指点!
顶部