Nginx: принудительное кэширование сайта

Резкие всплески посещаемости всегда дают о себе знать высокой нагрузкой, и, чаще всего, недоступностью ресурса. К подобным проблемам можно подготовиться, даже если Ваш сайт часто обновляется и время появления статей на сайте критично. Наплыв посетителей происходит всплеском и обычно не длится долгое время, если это конечно не DDoS-атака :)

Включаем кэширование в nginx:

proxy_cache_path  /var/lib/nginx/cache  levels=1:2   keys_zone=pagecache:180m  max_size=500m inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_use_stale error timeout invalid_header http_500;

server {

Так выглядит конфиг целиком, кэшируем только главную:

proxy_cache_path  /var/lib/nginx/cache  levels=1:2   keys_zone=pagecache:180m  max_size=500m inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_use_stale error timeout invalid_header http_500;

server {
 listen 80;
    server_name nagg.ru;

    open_file_cache max=99000 inactive=60m;
    open_file_cache_valid 60m;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    set $do_not_cache 0;
    set $no_cache 0;

    location = / {
        # If logged in, don't cache.
        if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
                set $no_cache 1;
        }
    proxy_cache_bypass $no_cache;
    proxy_no_cache $no_cache;

    proxy_hide_header "Set-Cookie";
	proxy_ignore_headers "X-Accel-Expires";
	proxy_ignore_headers "Expires";
	proxy_ignore_headers "Cache-Control";
	proxy_ignore_headers "Set-Cookie";
    proxy_cache pagecache;
	proxy_cache_valid any 1m;
    add_header X-ROOTCache $upstream_cache_status;
	include proxy.inc.conf;
    }

Последняя строка «add_header X-ROOTCache $upstream_cache_status;» дает нам понимание, попал объект в кэш или нет:

Проверяем, первый запрос (срок жизни кэша истек):

curl -I http://nagg.ru

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 13 Feb 2015 11:53:19 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.4.35
Link: <http://nagg.ru/>; rel=shortlink
Vary: Accept-Encoding,User-Agent
X-ROOTCache: EXPIRED

Второй запрос, объект закэширован:

curl -I http://nagg.ru

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 13 Feb 2015 11:53:23 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.4.35
Link: <http://nagg.ru/>; rel=shortlink
Vary: Accept-Encoding,User-Agent
X-ROOTCache: HIT

Related posts:

  1. Nginx защита от DDoS атак При несложных атаках, можно защититься средствами сервера, в некоторых случаях...
  2. Nginx: просмотр директорий сайта Иногда необходимо разрешить просмотр каталогов вашего сайта, в nginx для...
  3. Nginx защита от DDoS атак – продолжение Обычно атака ботов происходит на любой участок сайта, обычно это...
  4. Nginx redirect wildcard subdomains to https В данном примере мы перенаправляем весь трафик http на https....
  5. Передача HTTPS приложению в связке Nginx Apache Иногда при работе по защищенному HTTPS-соединению, приложение не может определить...
You can leave a response, or trackback from your own site.

Оставить комментарий

*