map $uri $blogname{ ~^(?P/[^/]+/)files/(.*) $blogpath ; } map $blogname $blogid{ default -999; } server { listen 4443 ssl default_server; include snippets/snakeoil.conf; root /app/wordpress/; index index.php index.html; server_name _; access_log /var/log/nginx/access.log; location / { try_files $uri $uri/ /index.php?$args ; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass wordpress:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_split_path_info ^(.+?\.php)(/.*)$; set $path_info $fastcgi_path_info; fastcgi_param PATH_INFO $path_info; fastcgi_param REMOTE_ADDR $http_x_real_ip; fastcgi_read_timeout 300; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; } location ~ ^/files/(.*)$ { try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ; access_log off; log_not_found off; expires max; } location ^~ /blogs.dir { internal; alias /var/www/example.com/htdocs/wp-content/blogs.dir; access_log off; log_not_found off; expires max; } }