鍍金池/ 問答/PHP  Linux/ php+nginx做一個圖片服務器

php+nginx做一個圖片服務器

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

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

回答
編輯回答
涼薄

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

2018年3月13日 06:18
編輯回答
款爺
將nginx的server設置為/data/www/,上傳的時候php取圖片名稱前六位,并mkdir -p ./11/aa/bb
然后將圖片放置到相應目錄中
取圖片時,nginx重寫規(guī)則匹配到目標路徑即可
訪問就可以這樣:http://img.xxx.com/11aabbee38db401fcec7e4ff2d6008263c1593b14c.jpg
實際取的圖片是/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