Base di conoscenze
1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Questa guida riguarda le funzioni ODBC di PHP.
Le funzioni ODBC di PHP sono supportate solo su Serveur Cloud.
Funzioni Open Database Connectivity
Si tratta delle funzioni utilizzate per interagire con i database tramite l'interfaccia ODBC (Open Database Connectivity), uno standard per accedere alle fonti di dati in modo uniforme. Ecco alcuni esempi di utilizzo delle funzioni ODBC di PHP:
- Potere leggere i dati da un database esterno e visualizzarli sul tuo sito web
- Inserire o modificare i dati in un database esterno
- Eseguire query complesse su un database esterno
Questa guida spiega come lavorare senza il modulo PECL SSH2 client non disponibile sugli hosting Web e Server Cloud Infomaniak, utilizzando invece la libreria phpseclib, che funziona in PHP nativo senza richiedere estensioni specifiche.
Premessa
- L'uso di
PECL SSH2 clientprovoca errori di tipoNo compatible key exchange algorithms foundoUnable to exchange encryption keysnella sua ultima versione disponibile. Phpseclibconsente di:- Effettuare l'autenticazione SSH tramite password o chiave privata.
- Eseguire comandi remoti.
- Trasferire file sicuri (SFTP).
- Gestire le chiavi SSH.
Utilizzare phpseclib
Per integrare una connessione SSH in uno script PHP, utilizzare phpseclib come segue:
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('domain.xyz');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private_key'));
if (!$ssh->login('utilisateur', $key)) {
exit('Authentication Failed');
}
echo $ssh->exec('ls -la');Infomaniak non effettua alcun backup dei VPS Cloud / VPS Lite.
Puoi comunque…
- … creare un'istantanea (snapshot) del server (backup non automatizzato)
- … salvare il server su Swiss Backup (backup automatizzato)
Questa guida riguarda l'installazione di estensioni PHP su Hosting Web Infomaniak.
Utilizzo delle estensioni PHP Zend
- Zend Guard Loader è un'estensione PHP che consente di eseguire script PHP cifrati tramite Zend Guard.
- Zend Guard Loader è installato di default per PHP <= 5.6 su tutti gli hosting web e non è disponibile per le versioni di PHP >= 5.6.
- Da PHP 5.3.x, il modulo Zend Optimizer è stato sostituito da ZendGuardLoader
- L'estensione ZendOPCache richiede un Server Cloud configurato con PHP 5.5 minimo
Questa guida riguarda la creazione di reti private tra diverse offerte di hosting Infomaniak come VPS Cloud / VPS Lite, Public Cloud, NAS Synology, ecc.
Creare un VLAN tra VPS
Non è possibile creare una rete privata (VLAN) tra VPS Cloud / VPS Lite e altri prodotti, come NAS Synology ad esempio, poiché sono installati su reti separate.
Tuttavia è possibile creare un VLAN tra almeno 10 VPS Cloud / VPS Lite di tua proprietà (contatta il supporto Infomaniak) ma una rete privata dedicata non potrà comunicare con un'altra.
Si consiglia di migrare all'offerta Public Cloud per creare tali reti private tra VM.
Questa guida vi aiuterà, ad esempio, se desiderate distribuire un pacchetto come pymysql e questo richiede una versione di python superiore a quella proposta sul vostro hosting.
Premessa
- Anaconda è una distribuzione libera e open source dei linguaggi di programmazione Python. Questa distribuzione mira a semplificare la gestione dei pacchetti e la distribuzione.
- È quindi consigliabile utilizzare conda fornito con una versione recente di python e che si installa nello spazio utente, in modo che non ci siano conflitti con il sistema python (come in un ambiente virtuale, che richiede sempre un'installazione di sistema della versione desiderata).
- Prendete visione della documentazione ufficiale.
⚠️ Per un ulteriore aiuto contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite anche il ruolo dell'hosting provider.
Scaricare l'installatore
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s 18:21:11 (100 MB/s) - ‘Miniconda3-py37_4.10.3-Linux-x86_64.sh’ saved [89026327/89026327]Controllare l'hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OKAvviare l'installazione
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done## Package Plan ##environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3The following NEW packages will be INSTALLED: _libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3Preparing transaction: done
Executing transaction: done
installation finished.Avviare conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)Installare pymysql (ad esempio)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Questa guida spiega come specificare un file che verrà caricato prima della pagina desiderata o all'inizio di ogni script PHP eseguito sul tuo server, incluso come se fosse stato chiamato con la funzione require(), ma in modo più globale utilizzando la direttiva auto_prepend_file di PHP.
Premessa
- Ad esempio, per dichiarare gli header di un sito web, è possibile creare un file
headers.phpche contiene funzioni PHPheader()e che venga prepend all'inizio di ogni file PHP…- … tramite un file
.user.ini(proprio di una cartella), - … o tramite la configurazione del sito del Manager (globale) come spiegato di seguito.
- … tramite un file
Includere un file globalmente dal Manager
Per accedere alla gestione del sito web:
- Clicca qui per accedere alla gestione del tuo prodotto sul Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato:
- Clicca su Gestisci sotto Impostazioni avanzate:

- Clicca sulla scheda PHP / Apache.
- Completa la riga interessata inserendo il percorso del file da includere.
- Clicca sul pulsante per salvare:

Dopo aver definito questa direttiva, tutte le pagine PHP sul tuo server includeranno automaticamente il file specificato prima di eseguire il proprio codice.
Gli header definiti in un file .htaccess sono validi solo per il contenuto non PHP (quindi statico).
Infomaniak utilizza php-fpm che riceve i vari header tramite apache fast_cgi. Nella RFC di cgi_www l'header Strict-Transport-Security non fa parte degli header passati tramite CGI e la documentazione Apache lo conferma. Prendi visione di questa altra RFC.
⚠️ Per ulteriori assistenze contatta un partner o lancia gratuitamente una richiesta di offerta — scopri anche il ruolo dell'hosting provider.
L'infrastruttura Infomaniak non trasmette istruzioni di virtualizzazione ai VPS Cloud / VPS Lite; non è quindi possibile eseguire la virtualizzazione annidata (virtualizzazione che si eseguirebbe all'interno di un ambiente già virtualizzato) poiché ciò comporta problemi, in particolare durante le migrazioni in diretta.
Per utilizzare moduli Perl su un Server Cloud Infomaniak, è necessario installarli nell'albero utente e definirne il percorso completo all'interno degli script.
Potrai così installare e aggiornare liberamente i tuoi moduli.
Questa guida riguarda Redis, un modulo PHP per Serveur Cloud Infomaniak.
Premessa
Redisviene utilizzato con PHP per accelerare le prestazioni servendo da cache per dati temporanei e per gestire le sessioni utente, migliorando così l'efficienza delle applicazioni Web.Redisconsente inoltre di implementare sistemi di coda e di memorizzare temporaneamente i dati per compiti asincroni o statistiche.
Installare Redis
Redis si installa da Fast Installer, le applicazioni disponibili in pochi clic su Serveur Cloud:
- Dopo l'installazione,
Redisè accessibile tramite l'IP/portlocalhost:6379o127.0.0.1:6379 - La password per
Redisdeve essere compresa tra 15 e 99 caratteri (inclusi).
Questa guida spiega come aumentare il valore max_children su Server Cloud per aumentare il numero di processi PHP simultanei che possono essere utilizzati dal tuo sito. Questo sarà molto utile per risolvere problemi di caricamento infinito delle pagine del tuo sito.
Premessa
- Per impostazione predefinita su qualsiasi hosting, il limite di
max_childrenè impostato su 20- Sebbene sia possibile aumentare questo valore dal Manager Infomaniak, il limite di
max_childrenviene automaticamente regolato in base alla configurazione del tuo Server Cloud. - Per aumentare questo limite su hosting condiviso, migra su Server Cloud.
- Sebbene sia possibile aumentare questo valore dal Manager Infomaniak, il limite di
- Per capire come calcolare al meglio i
max_childrennecessari, consulta questo articolo sull'argomento.
Aumentare il valore max_children
Prerequisiti
- Assicurarsi di disporre delle risorse necessarie sul server Cloud.
- Assicurarsi che tutte le risorse del server Cloud non siano utilizzate; se risulta che queste sono completamente utilizzate, l'aumento del valore
max_childrennon avrà alcun effetto (Modificare le risorse del Server Cloud). - Controllare il monitoraggio delle risorse del tuo server, nel caso in cui le risorse del tuo server siano esaurite, sarà necessario verificare l'ottimizzazione dei processi e del tuo sito prima di considerare l'aumento del valore
max_children. - Consultare i rapporti di errore PHP dalla cartella
/ik-logs(master process php logs - nome del file: php-fpm.log) per verificare se il limite "max_children" è stato superato... esempio di errore:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Per accedere alla gestione dei parametri PHP / Apache del sito di cui è necessario aumentare il valore max_children su Server Cloud, consulta questa altra guida.
Potrai in particolare…
- … scegliere un nuovo valore di
max_children:
Non dimenticare di salvare le modifiche in fondo alla pagina.
Limiti in base al server
Limite dei max_children in base alle risorse del Server Cloud:
| Configurazione Server Cloud | max_children |
|---|---|
| 2 CPU / 6 Go RAM | 20 |
| 4 CPU / 12 Go RAM | 40 |
| 6 CPU / 18 Go RAM | 60 |
| 8 CPU / 24 Go RAM | 80 |
| 12 CPU / 36 Go RAM | 120 |
| 16 CPU / 48 Go RAM | 160 |
| 24 CPU / 72 Go RAM | 240 |
| 32 CPU / 96 o 128 Go RAM | 320 |
Questa guida spiega come modificare il valore della direttiva php_value include_path.
Modificare il include_path
Come qualsiasi altro parametro PHP, include_path è definito nel file .user.ini.
Ecco un esempio di percorso da utilizzare nel file .user.ini:
include_path = .:/home/clients/123456789a12345b12fc345d/web/www.domainetest.abc/public/abc/includeConsulta questa guida su phpinfo per verificare che la tua nuova direttiva sia stata applicata.
Questa guida spiega come modificare le variabili dell'estensione PHP-CLI disponibile per impostazione predefinita su Server Cloud Infomaniak.
Modifica delle variabili PHP_CLI
Per accedere alle estensioni PHP del Server Cloud:
- Clicca qui per accedere alla gestione del tuo Server Cloud sul Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al Server Cloud interessato.
- Clicca su Estensioni PHP nel menu laterale sinistro.
- Clicca sul menu di azione ⋮ a destra di PHP-CLI nella tabella che si visualizza.
- Clicca su Configura:

- Modifica le seguenti variabili:
allow_url_fopen,allow_url_include,memory_limit,max_execution_time,short_open_tag,allow_local_infile - Clicca sul pulsante blu Salva.
Questa guida spiega come autorizzare determinati porti in entrata e/o in uscita nel firewall di un server VPS Cloud / VPS Lite.
Accedere allo strumento di gestione
Per gestire il firewall VPS Cloud / VPS Lite:
- Clicca qui per accedere alla gestione del tuo prodotto su Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato.
- Clicca su Firewall nel menu laterale sinistro:

Regola per autorizzare il ping su VPS Cloud / VPS Lite
Per aggiungere una regola sul firewall:
- Clicca sul pulsante blu per Aggiungere una regola.
- Clicca su Selezione manuale.
- Seleziona ICMP:

- Convalida in fondo alla pagina.
Aprire la porta in uscita 25 in modo globale
La porta in uscita 25 (porta SMTP Mail) è bloccata per impostazione predefinita.
È consigliato utilizzare una soluzione d'invio mail autenticato.
Per aprire questa porta, contattate il supporto Infomaniak giustificando la vostra richiesta.
Questa guida spiega come modificare la configurazione di un VPS Cloud / VPS Lite.
Le modifiche alla configurazione (CPU/RAM) o allo spazio di archiviazione rendono il servizio non disponibile per circa 20 minuti.
Modifica delle dimensioni dello spazio di archiviazione su VPS Cloud / VPS Lite
Per accedere a VPS Cloud / VPS Lite:
- Clicca qui per accedere alla gestione del tuo prodotto su Infomaniak Manager (hai bisogno di aiuto?).
- Clicca sul menu di azione ⋮ a destra dell'oggetto interessato nella tabella che viene visualizzata.
- Clicca su Modifica l'offerta:

- Effettua le regolazioni desiderate tra le proposte dello shop e completa la procedura in basso:

- È necessarioestendere il volume dopo un aumento del volume di archiviazione.
Infomaniak non offre il cifraggio del disco virtuale su VPS Cloud / VPS Lite ma fornisce un dispositivo a blocchi che puoi formattare e cifrare se lo desideri.
Questa guida riguarda lo swap su Server Cloud.
Swap e memoria RAM
Può esserci dello swap anche se il consumo di RAM è basso. Infatti, il sistema può utilizzare lo swap in qualsiasi momento se lo ritiene utile.
Lo swap non è uno spazio di memoria dedicato all'uso se non c'è RAM libera, anche se questa è spesso la sua principale utilizzazione.
Se desideri saperne di più, esiste un parametro "swappiness" che permette di definire il modo in cui il sistema utilizzerà lo swap. Il valore predefinito è 60 e non può essere modificato.
Questa guida spiega come connettersi a Elasticsearch dopo averlo installato su Magento da un Server Cloud Infomaniak.
Prerequisiti
- Possedere un Server Cloud Infomaniak.
- Installare Magento.
- Contattare il supporto Infomaniak per l'installazione di Elasticsearch.
Informazioni di connessione
Una volta connesso al tuo spazio Magento, sarà necessario indicare le seguenti informazioni per avviare Elasticsearch:
- Hostname :
localhosto127.0.0.1 - Porta :
9200 - Prefisso :
magento2
⚠️ Per ulteriori assistenze contatta un partner o lancia gratuitamente una richiesta di offerta — scopri anche il ruolo dell'hosting provider.
Non è possibile ordinare e ottenere ulteriori indirizzi IP su un VPS Cloud / VPS Lite.
Le alternative possibili sarebbero utilizzare…
- … un hosting di tipo Public Cloud (è possibile aggiungere tanti indirizzi IP quanti desiderati),
- … lo strumento Newsletter secondo le tue esigenze.
Questa guida presenta diversi esempi di utilizzo di Varnish su Serveur Cloud Infomaniak.
⚠️ Per ulteriori assistenza contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite anche il ruolo dell'hosting provider.
Configurazione di Varnish
Dopo installazione, la configurazione di Varnish include regole importanti per la memorizzazione nella cache e il purging. Fate attenzione a non autorizzare accidentalmente indirizzi IP non desiderati.
Ecco a cosa potrebbe assomigliare un file di configurazione di base con alcuni casi comuni e diverse azioni/regole in un solo esempio:
vcl 4.0;
# Configuration du backend par défaut
backend default {
.host = "127.0.0.80"; # Adresse IP du backend
.port = "80"; # Port du backend
}
# Définition d'une liste de contrôle d'accès (ACL) pour les IPs autorisées à purger le cache
acl purge {
"localhost"; # IP locale
"1.2.3.4"; # IP de votre domicile
"42.42.42.0"/24; # Plage d'IP publique de votre entreprise
! "42.42.42.7"; # Exclusion d'une IP spécifique (ex : un collègue gênant)
}
# Traitement des requêtes à leur réception par Varnish
sub vcl_recv {
# Autoriser les requêtes de purge
if (req.method == "PURGE") {
# Vérification si l'IP du client est autorisée à purger
if (!client.ip ~ purge) { # 'purge' fait référence à l'ACL définie plus haut
# Retourne une page d'erreur si l'IP n'est pas autorisée
return (synth(405, "Cette IP n'est pas autorisée à envoyer des requêtes PURGE."));
}
# Si l'IP est autorisée, purger le cache pour cette requête
return (purge);
}
# Autoriser la purge de toutes les images via une requête PURGEALL
if (req.method == "PURGEALL" && req.url == "/images") {
if (!client.ip ~ purge) {
return (synth(405, "Cette IP n'est pas autorisée à envoyer des requêtes PURGE."));
}
# Invalider tous les objets en cache correspondant à des images
ban("req.url ~ \.(jpg|png|gif|svg)$");
return (synth(200, "Images purgées."));
}
# Ne pas mettre en cache les pages avec une autorisation (header Authorization)
if (req.http.Authorization) {
# Passer la requête directement au backend sans la mettre en cache
return (pass);
}
}
# Traitement de la réponse du backend avant de la renvoyer au client
sub vcl_backend_response {
# Mise en cache des images pour une durée de 1 jour
if (beresp.http.content-type ~ "image") {
set beresp.ttl = 1d;
}
# Si le backend indique que la réponse ne doit pas être mise en cache, respecter cette consigne
if (beresp.http.uncacheable) {
set beresp.uncacheable = true;
}
}Pulizia da interfaccia CLI
Da lì, le regole enunciate nella configurazione sopra funzionano su tutte le richieste, quindi se il sito configurato è "domain.xyz", è possibile utilizzare semplicemente l'utensile CLI "curl" e fare quanto segue:
# Envoyer une requête PURGE pour purger la page d'accueil de "domain.xyz"
$ curl -X PURGE https://domain.xyz/
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>La page a été purgée avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 2</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>E così, la homepage è stata purgata. O per purgare un'altra URL, basta indirizzare la richiesta verso quest'ultima:
# Envoyer une requête PURGE pour purger un fichier spécifique à "domain.xyz"
$ curl -X PURGE https://domain.xyz/some_path/some_file.html
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged</title>
</head>
<body>
<h1>Erreur 200 : Purge effectuée</h1>
<p>Le fichier a été purgé avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 4</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>Oppure, come indicato nella configurazione VCL, svuotare tutte le immagini:
# Envoyer une requête PURGEALL pour purger toutes les images dans "domain.xyz"
$ curl -X PURGEALL https://domain.xyz/images
# Réponse renvoyée par le serveur Varnish
<!DOCTYPE html>
<html>
<head>
<title>200 Purged images</title>
</head>
<body>
<h1>Erreur 200 : Images purgées</h1>
<p>Toutes les images ont été purgées avec succès.</p>
<h3>Guru Meditation:</h3>
<p>XID: 32770</p>
<hr>
<p>Serveur de cache Varnish</p>
</body>
</html>Pulizia da un CMS
È un po' più difficile illustrare questo caso perché esistono molti modi per gestire la memorizzazione nella cache dal backend. Nell'esempio di configurazione sopra, viene aggiunto un controllo sull'intestazione "Uncacheable", che disattiva la memorizzazione nella cache. Con questa opzione, qualsiasi CMS potrebbe semplicemente impostare questa intestazione sulla risposta per disattivare la memorizzazione nella cache di questa richiesta, ad esempio.
Da qualsiasi codice PHP e con la configurazione sopra, è possibile inviare una richiesta HTTP e utilizzare questo estratto per eseguire un PURGE della cache:
<?php
if ($curl = curl_init("http://127.0.0.1/some_url")) {
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "PURGE",
CURLOPT_HTTPHEADER => [
"Host: {$_SERVER['HTTP_HOST']}"
]
]);
curl_exec($curl);
if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) {
echo "Cache purged!";
}
curl_close($curl);
}
?>Saperne di più
Link utili riguardanti il linguaggio di configurazione Varnish (VCL) per controllare l'elaborazione delle richieste, il routing, la memorizzazione nella cache e diversi altri aspetti: