Микрокеширование обратного прокси-сервера Nginx не работает

Pryani4ka

Пользователь
Регистрация
16.01.13
Сообщения
2
Реакции
0
Баллы
1
Моя текущая конфигурация — веб-сервер Nginx в качестве обратного прокси-сервера с Apache на сервере для динамических страниц, а Apache настроен с помощью PHP-FPM.

Мои динамические страницы меняются нечасто, поэтому я пытаюсь использовать микрокеширование Nginx, но, похоже, у меня ничего не получается.

Вот мой nginx.conf (возможно, ненужное исключено):





Код:
Request URL: [URL='https://wmlogs.com/yti/aw55waHBodHRwczovL2V4YW1wbGUuY29tL21pY3JvY2FjaGVfdGVzdCzVG']https://example.com/microcache_test.php[/URL]
Request Method: GET
Status Code: 200
Remote Address: 82.102.16.22:443
Referrer Policy: no-referrer-when-downgrade
cache-control: public
content-encoding: gzip
content-type: text/html; charset=UTF-8
date: Tue, 19 Feb 2019 09:13:58 GMT
server: nginx/1.15.8
status: 200
vary: Accept-Encoding
:authority: example.com
:method: GET
:path: /mictest.php
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,* echo ' Current microtime: ' . microtime(true);
Код (разметка): я могу подтвердить, что использую PHP-FPM, поскольку info.php отвечает.

Server API FPM/FastCGI
Код (разметка): Чтобы проверить это, у меня есть файл microcache_test.php, содержащий

location / { location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|woff|ttf|svg|eot|sh)$ { root /home/xtrefish/public_html; expires max; try_files $uri @backend; } error_page 405 = @backend; error_page 500 = @custom; add_header X-Cache "HIT from Backend"; add_header Strict-Transport-Security "max-age=31536000"; add_header X-Content-Type-Options nosniff; proxy_pass IPADDRESS:8181; include proxy.inc; } location @backend { internal; proxy_pass IPADDRESS:8181; include proxy.inc; } location @custom { internal; proxy_pass IPADDRESS:8181; include proxy.inc; location @custom { internal; proxy_pass IPADDRESS:8181; include proxy.inc; } location ~ .*\.(php|jsp|cgi|pl|py)?$ { ## Caching stuff is here # Setup var defaults set $no_cache ""; # If non GET/HEAD, don't cache & mark user as uncacheable for 1 second via cookie if ($request_method !~ ^(GET|HEAD)$) { set $no_cache "1"; } # Drop no cache cookie if need be # (for some reason, add_header fails if included in prior if-block) if ($no_cache = "1") { add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; } # Bypass cache if no-cache cookie is set if ($http_cookie ~* "_mcnc") { set $no_cache "1"; } # Bypass cache if flag is set fastcgi_no_cache $no_cache; fastcgi_cache_bypass $no_cache; fastcgi_cache microcache; fastcgi_cache_key $scheme$host$request_uri$request_method; fastcgi_cache_valid 200 301 302 10m; fastcgi_cache_use_stale updating error timeout invalid_header http_500; fastcgi_pass_header Set-Cookie; fastcgi_pass_header Cookie; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; proxy_pass IPADDRESS:8181; include proxy.inc; }
Код (разметка): И /microcache_test.php отвечает:

http { sendfile on; tcp_nopush on; tcp_nodelay on; client_header_timeout 10s; client_body_timeout 10s; client_max_body_size 200k; client_header_buffer_size 2k; client_body_buffer_size 200k; large_client_header_buffers 3 1k; send_timeout 3m; keepalive_timeout 60 60; reset_timedout_connection on; ignore_invalid_headers on; connection_pool_size 256; request_pool_size 4k; output_buffers 4 32k; postpone_output 1460; include mime.types; default_type application/octet-stream; # Compression gzip gzip on; gzip_vary on; gzip_disable "MSIE [1-6]\."; gzip_proxied any; gzip_min_length 512; gzip_comp_level 6; gzip_buffers 8 64k; gzip_types text/plain text/xml text/css text/js application/x-javascript application/xml image/png image/x-icon image/gif image/jpeg image/svg+xml application/xml+rss text/javascript application/atom+xml application$ # Proxy settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_pass_header Set-Cookie; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; # SSL Settings ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS"; # Logs log_format bytes '$body_bytes_sent'; #access_log /var/log/nginx/access.log main; access_log off; ## Advanced microcaching ## set cache dir, hierarchy, max key size and total size fastcgi_cache_path /dev/shm/microcache levels=1:2 keys_zone=microcache:50M max_size=2000M inactive=2h; ## set cache log location, so you can evaluate hits log_format cache '$remote_addr - $remote_user [$time_local] "$request" ' '$status $upstream_cache_status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; ## Set a cache_uid variable for authenticated users. map $http_cookie $cache_uid { default nil; ~SESS[[:alnum:]]+=(?<session_id>[[:alnum:]]+) $session_id; } ## mapping cache to request method map $request_method $no_cache { default 1; # by default do not cache HEAD 0; # cache HEAD requests GET 0; # cache GET requests } # Include additional configuration include /etc/nginx/cloudflare.inc; include /etc/nginx/conf.d*;q=0.8\naccept-encoding: gzip, deflate, br\naccept-language: en-US,en;q=0.9\ncache-control: max-age=0\ncookie: PHPSESSID=864e0ajkc6l1rbhepr651dp1t2\nsave-data: on\nupgrade-insecure-requests: 1\nuser-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36\n \n \n \n\n\u041a\u043e\u0434 (\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430): \u041c\u043e\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f vhost (\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b):\n\n[[:alnum:]]+) $session_id; } ## mapping cache to request method map $request_method $no_cache { default 1; # by default do not cache HEAD 0; # cache HEAD requests GET 0; # cache GET requests } # Include additional configuration include /etc/nginx/cloudflare.inc; include /etc/nginx/conf.d/*.conf; }\n\u041a\u043e\u0434 (\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430): \u0417\u043d\u0430\u0447\u0438\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041c\u043e\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u2014 777, \u0438 \u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0435\u0448 \u0432 htaccess \u0432 Apache, \u043d\u043e \u0431\u0435\u0437\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043d\u043e (\u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Nginx \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432).\n\n\u0415\u0441\u0442\u044c \u0438\u0434\u0435\u0438, \u0447\u0435\u0433\u043e \u043c\u043d\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442?" }, "publisher": { "@type": "Organization", "name": "\u0421\u0415\u041e \u0424\u043e\u0440\u0443\u043c \u0412\u0435\u0431\u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432", "alternateName": "\u0421\u0415\u041e \u0424\u043e\u0440\u0443\u043c \u0412\u0435\u0431\u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432", "description": "\u0421\u0415\u041e \u0424\u043e\u0440\u0443\u043c \u0412\u0435\u0431\u043c\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0412\u0441\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u042f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f CMS, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438\u0433\u0440\u044b. \u041a\u043d\u0438\u0433\u0438 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u044b. \u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043a\u0443\u0440\u0441\u044b, \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0443\u0440\u043e\u043a\u0438 \u0438 \u0442\u0440\u0435\u043d\u0438\u043d\u0433\u0438. \u0422\u044b\u0441\u044f\u0447\u0438 \u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e! \u0411\u0438\u0437\u043d\u0435\u0441 \u043a\u0443\u0440\u0441\u044b, \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u043e\u0432, SEO, \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0434\u0438\u0437\u0430\u0439\u043d, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0439\u0442\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0432\u044b\u043a\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e!", "url": "https://lumtu.com" } }