GNU/Linux >> Znalost Linux >  >> Linux

Jak povolit ukládání do mezipaměti FastCGI na straně serveru pomocí Nginx a PHP

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.


Linux
  1. Jak nainstalovat a nastavit Varnish Cache 6 s Nginx na CentOS 8

  2. Jak povolit HTTP2 v NGINX

  3. Jak nainstalovat PHP 7.4 s Nginx na Ubuntu 20.04

  1. Jak nakonfigurovat Nginx pro práci s PHP přes PHP-FPM

  2. Jak nainstalovat a povolit alternativní mezipaměť PHP (APC) na CentOS

  3. Jak nainstalovat Node.js s NVM a Nginx na Ubuntu 22.04

  1. Jak nainstalovat Nextcloud s Nginx a PHP 7.3 na CentOS 8

  2. Jak nainstalovat Drupal 8.1 s Nginx, PHP-FPM a SSL na Ubuntu 16.04

  3. Jak prozkoumat únik paměti pomocí Apache a PHP?