Nginx je open-source a vysoce výkonný webový server, který lze použít k urychlení poskytování obsahu a aplikací. Nginx zvyšuje zabezpečení, zlepšuje škálovatelnost a může být také použit jako nástroj pro vyrovnávání zátěže s vysokou dostupností. Může být použit jako reverzní proxy a jedním z nejdůležitějších použití Nginx je ukládání obsahu do mezipaměti. Jedním z nejlepších přístupů je použití Nginx jako mezipaměti obsahu. V tomto článku se budeme zabývat ukládáním obsahu do mezipaměti Nginx FastCGI pro lepší výkon webových stránek.
Povolení ukládání do mezipaměti FastCGI v Nginx
V tomto článku předpokládáme, že jste již nainstalovali Nginx s PHP na svůj Linux.
Chcete-li začít povolovat ukládání do mezipaměti FastCGI, upravte konfigurační soubor virtuálního hostitele, ve kterém má být ukládání do mezipaměti povoleno.
$ cd /etc/nginx/conf.d
$ vi example.conf
Přidejte následující obsah na začátek souboru. Pamatujte, že řádky by měly být mimo direktivu server {} .
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri";

Kde,
- fastcgi_cache_path – umístění keše
- úrovně – úroveň hierarchie mezipaměti, nastavuje dvouúrovňovou hierarchii adresářů pod /etc/nginx/cache
- keys_zone – název paměťové zóny (V tomto příkladu jsem použil MYAPP. Můžete mít své vlastní preference)
- neaktivní – určuje čas, po kterém budou z mezipaměti vymazána data uložená v mezipaměti, ke kterým se během zadané doby nepřistoupí. V tomto příkladu je doba nečinnosti nastavena na 60 m, kterou lze zvýšit nebo snížit.
- fastcgi_cache_key – Určuje, jak budou hašovány názvy souborů mezipaměti
Proměnné použité v factcgi_cache_key
- $schéma – schéma požadavku HTTPS nebo HTTP
- $request_method – určuje metody požadavku, jako je GET nebo POST
- $host – Název serveru odpovídající požadavku
- $request_uri – Úplný identifikátor URI požadavku
Umístění souboru mezipaměti může být kdekoli na pevném disku, ale velikost by měla být menší než systémová RAM + swap, aby se předešlo problému „Nelze alokovat paměť “.
Nyní přejděte do direktivy umístění, kde je požadavek PHP předán php-fpm. Do „location ~ \.php$ {}“ přidejte následující řádky
fastcgi_cache MYAPP;
fastcgi_cache_valid 200 1m;
Kde MYAPP je název paměťové zóny a fastcgi_cache_valid 200 ukládá do mezipaměti všechny odpovědi HTTP 200.
Pokud je definován pouze čas, pak se do mezipaměti uloží 200, 301 a 302 odpovědí.

Spuštěním následujícího příkazu otestujte konfiguraci Nginx vhost.
$ nginx -t

Nyní restartujte službu Nginx.
$ systemctl restart nginx
Úplný konfigurační soubor vhost vypadá takto
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
listen 80;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name your_server_name;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_cache MYAPP;
fastcgi_cache_valid 200 60m;
}
} Testování mezipaměti FastCGI
Vytvořte jednoduchý soubor PHP v kořenovém adresáři dokumentu.
$ vi /usr/share/nginx/html/info.php
Vložte následující obsah a uložte
<?php phpinfo(); ?>
Nyní si soubor vyžádejte pomocí příkazu curl nebo pomocí prohlížeče
Pokud ukládání do mezipaměti funguje dobře, můžete uvést adresář pro ukládání do mezipaměti pod /etc/nginx/cache

Přidejte následující řádek nad direktivu server{}, abyste označili, zda byla mezipaměť vynechána nebo nalezena
add_header X-Cache $upstream_cache_status;
Restartujte Nginx a spusťte příkaz curl jako
$ curl -I http://localhost/info.php

Nastavení výjimek mezipaměti v Nginx fastCGI Cache
Někdy nemusíme ukládat do mezipaměti dynamický obsah, jako jsou základní autentizační stránky. Tyto typy obsahu lze zabránit ukládání do mezipaměti na základě různých proměnných, jako je „$request_method“ „“$request_uri“ „$http_cookie“ atd.
Níže je ukázková konfigurace výjimky mezipaměti a měla by být použita na serveru{}
směrnice.
#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 ~* "/(cp/)")
{
set $no_cache 1;
}
#Don't cache if there is a cookie called PHPSESSID
if ($http_cookie = "PHPSESSID")
{
set $no_cache 1;
} Závěr
V tomto článku jsme se naučili, jak nakonfigurovat Nginx s PHP pro dynamické ukládání obsahu do mezipaměti. Také jsme se dozvěděli o různých tipech, jak nastavit výjimky mezipaměti.