Here is the problem: I have a Linux server in Europe serving a busy Drupal site using nginx+php-fpm, I have another Linux server in the US (where a big portion of my visitors are coming from). The second server is heavily under-used. I am wondering how to make use of the second server to deliver my site's static content?


Install Nginx on the 2nd server and set it up as a lightweight static proxy cache file server:

server {
        open_file_cache_valid 200 20m;
        listen 80;
        server_name yourcdndomain.com;
        access_log   /srv/www/yourcdndomain.com/logs/access.log;
        root   /srv/www/yourcdndomain.com/public_html/;
      location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
                                # Cache static-looking files for 120 minutes, setting a 10 day expiry time in the HTTP header,
                                # whether logged in or not (may be too heavy-handed).
                                open_file_cache_valid 200 120m;
                        expires 7776000;
                        open_file_cache staticfilecache;
location = /50x.html {
                root   /var/www/nginx-default;
 # No access to .htaccess files.
        location ~ /\.ht {
          deny  all;

Rewrite your static files to the new domain or change the urls


I changed the file above to use open_file_cache instead of proxy_cache

  • What is the point to proxy_cache static files you have already on the disk? Nginx serves them from root directory perfectly. – Alexander Azarov Apr 27 '11 at 11:13
  • @Alaz When you set proxy_cache Nginx will serve the files from shared memory even though it's not proxying back to another server. – Chris_O Apr 27 '11 at 18:06
  • @Chris_O Can you point to the documentation to prove this assertion? – Alexander Azarov Apr 27 '11 at 18:19
  • @Alaz I just looked over the new docs and open_file_cache would be a better choice in this situation than proxy_cache – Chris_O Apr 27 '11 at 20:37
  • Just to clarify. proxy_cache is a disk cache, not memory cache. It's zone (i.e. cache keys) reside in shared memory indeed, but the files are stored on disk and Nginx serves them just like any regular file. – Alexander Azarov Apr 28 '11 at 6:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.