![NGINX 缓存错误:与 /etc/nginx/nginx.conf 中已声明的大小 0 冲突](https://linux22.com/image/654672/NGINX%20%E7%BC%93%E5%AD%98%E9%94%99%E8%AF%AF%EF%BC%9A%E4%B8%8E%20%2Fetc%2Fnginx%2Fnginx.conf%20%E4%B8%AD%E5%B7%B2%E5%A3%B0%E6%98%8E%E7%9A%84%E5%A4%A7%E5%B0%8F%200%20%E5%86%B2%E7%AA%81.png)
我当前的 nginx for drupal 配置出现以下错误。不知何故,我无法启用 nginx 缓存。尝试了不同的配置,但每次都出现相同的错误。有人能帮忙吗?
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
我的 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;
HEAD 0;
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;
}
答案1
将 include 放在/etc/nginx/conf.d/*.conf;
缓存声明之后,而不是之前。