obviously we can't just delivery those path to image to server A and eventually to end user.
I think that's the only way to go, but you don't need to physically save the files on server A. In PHP: If server A can talk to server B on filesystem level (i.e. through a network share), server A could fetch the data from server B and pass it through to the user:
header("Content-type: image/jpeg"); // Make sure you send the right headers
$file = fopen("/path/to/server/b/huge/image.jpg", "r");
fpassthru($file); // or deliver chunks using fread()
fclose($file);
If there is only an internal http connection, you would change the 2nd line to something like
$file = fopen("http://serverb.local/huge/image.jpg", "r");
if this method is too slow for you or not convenient to set up, you would have to use (S)FTP, SCP or something similar. FTP is available in PHP natively; the other protocols are probably easiest to simply call from the PHP script using exec()
.
depending on your scenario and use frequency, you may want to employ some sort of caching on Server A, so that this operation doesn't have to be repeated every time.
If your servers are hosted in a datacenter, make sure that traffic between them is free or not too expensive.
This is the leanest way I can think of to let the user "see" an image without it clogging Server A.