nginx uses high ram

John Feuerstein john at feurix.com
Wed Jan 12 16:06:24 MSK 2011


As mentioned before, you have two options to handle application
controlled downloads:


*** 1 ***
Fix your PHP settings and code.
This is more painful than you might think(!), and many people get it wrong:

- disable PHP output buffering for the script (often enabled by
default), either via php.ini, htaccess, within the script, or
alternatively go ahead and explicitely flush buffers within the loop.

- make sure to disable PHP zlib output compression (similar effect)

- make sure to configure PHP max_execution_time and similar timeouts

- configure nginx settings for the download script location:
gzip*, fastcgi_buffer*, proxy_buffer* and various timeouts come to mind,
depending on how you communicate with PHP.



*** 2 ***
As suggested, stop useless piping of data through the PHP process and
make use of nginx's X-Accel-Redirect. Compare this to all of the stuff
above!

location /downloads/ {
  internal;
  alias /path/to/the/dir/containing/filename.file/;
}

<?php
header("Content-Type: application/force-download"); // or correct one
header("X-Accel-Redirect: /downloads/filename.file");
?>


Regards,
John



More information about the nginx mailing list