And also, using this addon pair with @Xon Redis Caching addon.
I have to allocate high memory for Redis Caching.
Or else setting a very low memory like 256mb for Redis instantly consume it all causing a random logout issue.
It doesn't need PHP run on all images, rather you shouldn't have Nginx intercept HTTP requests on files that don't exist. A better option than running all .png files through PHP would be to only do what you are doing there if it's truly a static file (and the file exists in the file system).
Blindly intercepting the request and blocking anything upstream (where it should go) purely based on the request URI is probably not a great idea. You probably want to use something like the try_files directive to make sure the file exists before you assume it's a static file. http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
If your installation uses a caching mechanism (for example memcached), it will be used to store images for 1 hour. This means that your server does not need to go out and retrieve images as often as they are viewed.