Кэширование не работает в nginx с использованием proxy_cache. - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь настроить базовое кэширование в моем openresty nginx webserver.Я пробовал миллионы разных комбинаций из разных уроков, но не могу понять это правильно.Вот мой файл nginx.conf

user www-data;
worker_processes 4;
pid /run/openresty.pid;  
worker_rlimit_nofile 30000;

events {
worker_connections  20000;
}
http {

proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=cache:10m max_size=100m inactive=60m;

proxy_cache_key "$scheme$request_method$host$request_uri";

add_header X-Cache $upstream_cache_status;

include       mime.types;
default_type  application/octet-stream;

access_log /var/log/openresty/access.log;
error_log /var/log/openresty/error.log;

include ../sites/*;

lua_package_cpath '/usr/local/lib/lua/5.1/?.so;;';


}

А вот моя конфигурация сервера

server {
# Listen on port 8080.
listen 8080;
listen [::]:8080;

# The document root.
root /var/www/cache;

# Add index.php if you are using PHP.
index index.php index.html index.htm;

# The server name, which isn't relevant in this case, because we only have one.
server_name cache.com;

# Redirect server error pages to the static page /50x.html.
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root /var/www/cache;
}

location /test.html {

 root /var/www/cache;
 default_type text/plain;
 try_files $uri /$uri;
 expires 1h;
 add_header Cache-Control "public";
 proxy_cache cache;
 proxy_cache_valid 200 301 302 60m;
}
}

Кеширование должно работать нормально, в error.log или access.log, системе кеширования ничего нетпапка пуста, заголовок X-Cache с $ upstream_cache_status даже не отображается, когда я получаю заголовки из curl (curl -I).Теперь в моей конфигурации nginx (openresty) нет флага --without-ngx_http_proxy_module, поэтому модуль есть.Понятия не имею, что я делаю не так, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

add_header, определенный внутри блока http, будет охватывать тот, который определен в блоке server.Вот фрагмент из документа о add_header

Может быть несколько директив add_header. Эти директивы наследуются от предыдущего уровня тогда и только тогда, когда на текущем уровне не определены директивы add_header .

Если указан параметр always (1.7.5), поле заголовкабудет добавлено независимо от кода ответа.

Таким образом, вы не можете видеть заголовок X-Cache, как ожидалось.

0 голосов
/ 11 сентября 2018

Вы не определили ничего, что можно кэшировать: proxy_cache работает вместе с proxy_pass.

...