鍍金池/ 問(wèn)答/PHP  Linux/ php+nginx做一個(gè)圖片服務(wù)器

php+nginx做一個(gè)圖片服務(wù)器

在一個(gè)網(wǎng)站使用 http://img.xxx.com/117773ee38... img.xxx.com上的117773ee38db401fcec7e4ff2d6008263c1593b14c.jpg,但是它在圖片服務(wù)器上的路徑可能是 /data/www/11/77/3e/117773ee38db401fcec7e4ff2d6008263c1593b14c.jpg,請(qǐng)問(wèn)nginx如何配置,php如何寫這個(gè)圖片服務(wù)器,問(wèn)題應(yīng)該表達(dá)清楚了吧。

再來(lái)一個(gè)http://img.xxx.com/aabbccdd38...,我期望放到 /data/www/aa/bb/cc/文件夾去,意思就是根據(jù)文件名,取三個(gè)兩兩組合作為子目錄,再存放文件。

回答
編輯回答
涼薄

把nginx中sever 的根目錄設(shè)置成/data/www/11/77/3e/ 就行了

2018年3月13日 06:18
編輯回答
款爺
將nginx的server設(shè)置為/data/www/,上傳的時(shí)候php取圖片名稱前六位,并mkdir -p ./11/aa/bb
然后將圖片放置到相應(yīng)目錄中
取圖片時(shí),nginx重寫規(guī)則匹配到目標(biāo)路徑即可
訪問(wèn)就可以這樣:http://img.xxx.com/11aabbee38db401fcec7e4ff2d6008263c1593b14c.jpg
實(shí)際取的圖片是/data/www/11/aa/bb/11aabbee38db401fcec7e4ff2d6008263c1593b14c.jpg
nginx配置
server {
    listen 80;
    server_name  img.xxx.com;
    root   /data/www;
    
    charset utf-8;
    
    access_log  logs/host.access.log  main;
     
    location ~ .*\\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
    {  
        rewrite ^([a-z0-9A-z]{2})([a-z0-9A-z]{2})([a-z0-9A-z]{2})(.*) /data/www/$1/$2/$3/$1$2$3$4
    }
}
2018年9月9日 08:37