My current nginx for drupal config gives following error. Somehow, I am not able to enable nginx cache. Tried different config but overtime i get the same error. Can anyone help please?

nginx: [emerg] the size 5242880 of shared memory zone "MYAPP" conflicts with already declared size 0 in /etc/nginx/nginx.conf:51
nginx: configuration file /etc/nginx/nginx.conf test failed

My nginx.conf

user    nginx;
worker_processes    auto;
http {  include /etc/nginx/conf.d/*.conf;
include /etc/nginx/mime.types;
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=MYAPP:5M max_size=256M inactive=2h;
fastcgi_cache_key “$scheme$request_method$host$request_uri”;
add_header X-Cache $upstream_cache_status;

## Set a cache_uid variable for authenticated users.
map $http_cookie $cache_uid {
    default nil; # hommage to Lisp :)
    ~SESS[[:alnum:]]+=(?<session_id>[[:alnum:]]+) $session_id;
map $request_method $no_cache {
default 1;
GET 0;


server {
listen  80 default_server;
server_name abc.com;
root /srv/www/abc; ## <== Your only path reference.

#Cache everything by default
set $no_cache 0;
#Don’t cache POST requests
if ($request_method = POST)
set $no_cache 1;
#Don’t cache if the URL contains a query string
if ($query_string != “”)
{    set $no_cache 1;
#Don’t cache the following URLs
if ($request_uri ~* “/(administrator/|login.php)”)
set $no_cache 1;
#Don’t cache if there is a cookie called PHPSESSID
if ($http_cookie = “PHPSESSID”)
set $no_cache 1;

        location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass   unix:/var/run/php-fpm/rldb.sock;
fastcgi_read_timeout 600;
fastcgi_cache MYAPP;
fastcgi_cache_valid 200 301 30s;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_param HTTPS on;
fastcgi_buffer_size 256k;
fastcgi_buffers 256 32k;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;

# Set cache key to include identifying components
fastcgi_cache_valid 302     1m;
fastcgi_cache_valid 404     1s;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header updating http_500;
fastcgi_ignore_headers Cache-Control Expires;
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;

## Add a cache miss/hit status header.
add_header X-Micro-Cache $upstream_cache_status;

## To avoid any interaction with the cache control headers we expire
## everything on this location immediately.
expires epoch;

## Cache locking mechanism for protecting the backend of too many
## simultaneous requests.
fastcgi_cache_lock on;
  • Put include /etc/nginx/conf.d/*.conf; after the cache declaration, not before. Mar 24, 2015 at 10:51

1 Answer 1


Put include /etc/nginx/conf.d/*.conf; after the cache declaration, not before.

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.