最近公司商城的圖片嚴重影響到了網站的正常訪問,爲了儘快解決這個問題,採用 圖片動態生成的處理方式。這裏用到了nginx的 http_image_filter_module 模塊,安裝nginx的時候須要配置上 --with-http_image_filter_modulehtml
同時,把原來放在項目跟目錄下的圖片經過 rsync + inotify 配置 對圖片進行同步,同步到圖片服務器nginx
nginx 配置:bash
server { listen 80; server_name static.xxxx.com; location ~* /uploads/(.*)_(\d+)x(\d+)\.(jpeg|jpg|png|gif)$ { root /home/wwwroot; set $h $2; set $w $3; if ($h = '0'){ rewrite /uploads/(.*)_(\d+)x(\d+)\.(jpeg|jpg|gif|png)$ /uploads/$1.$4 last; } if ($w = '0') { rewrite /uploads/(.*)_(\d+)x(\d+)\.(jpeg|jpg|gif|png)$ /uploads/$1.$4 last; } #生成縮略圖 image_filter resize $h $w; image_filter_buffer 5M; error_page 415 /uploads/nopicture.png; try_files /uploads/$1.$4 /uploads/nopicture.jpg; } location ~* /uploads/(.*)$ { root /home/wwwroot; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #access_log /home/wwwlogs/static.cwbbc.com.log access; }
錯誤解決:服務器
我遇到的狀況是,經過域名訪問 uploads 目錄下少數圖片 出現 403錯誤,查看nginx error.log 以下網站
[error] 1326#0: *8 open() "/home/wwwroot/uploads/2018/0126/eeae48c7a3c6edd7085d75f63afc497b.jpg" failed (13: Permission denied), client: 125.80.130.229, server: static.cwbbc.com, request: "GET /uploads/2018/0126/eeae48c7a3c6edd7085d75f63afc497b.jpg HTTP/1.1", host: "static.xxxx.com"
貌似是權限的問題,百度以後 說是 nginx的啓動用戶和運行用戶不一致致使的 權限錯誤。server
修改 nginx.conf 裏面的 user 配置,個人配置默認是關閉的,沒有設置啓動用戶,如此打開就是了htm
#user nobody; user root;
重啓nginxblog
原來是這個問題圖片