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 client
provoca errori di tipoNo compatible key exchange algorithms found
oUnable to exchange encryption keys
nella sua ultima versione disponibile. Phpseclib
consente 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.
Tuttavia, è possibile…
- … creare un'istantanea (snapshot) del server (backup non automatizzato)
- … salvare il server su Swiss Backup (backup automatizzato)
Questa guida ti aiuterà, ad esempio, se desideri distribuire un pacchetto come pymysql
e questo richiede una versione di python superiore a quella offerta sul tuo hosting.
Premessa
- Anaconda è una distribuzione libera e open source dei linguaggi di programmazione Python. Questa distribuzione mira a semplificare la gestione dei pacchetti e il deployment.
- È 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).
- Consultate la documentazione ufficiale.
⚠️ Per ulteriori assistenza 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]
Verificare l'hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Avviare 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/miniconda3
added / 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_3
The 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_3
Preparing 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.php
che contiene le funzioni PHPheader()
e che sia 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 su Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato:
- Fai clic su Gestisci sotto Impostazioni avanzate:
- Fai clic sulla scheda PHP / Apache.
- Completate 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 headers tramite apache fast_cgi
. Nella RFC di cgi_www l'header Strict-Transport-Security
non fa parte degli headers passati tramite CGI e la documentazione Apache lo conferma. Prendete visione di questa altra RFC.
⚠️ Per ulteriori assistenza contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite 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.
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, perché 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.
È consigliabile migrare all'offerta Public Cloud per creare tali reti private tra VM.
Questa guida riguarda l'installazione di estensioni PHP su Hébergements Web Infomaniak.
Utilizzo di 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 Serveur Cloud configurato con PHP 5.5 minimo
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
Redis
viene 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.Redis
consente 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:6379
o127.0.0.1:6379
- La password per
Redis
deve essere compresa tra 15 e 99 caratteri (inclusi).
Questa guida spiega come aumentare il valore max_children
su Serveur 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 a 20.- Anche se è possibile aumentare questo valore dal Manager Infomaniak, il limite di
max_children
viene automaticamente regolato in base alla configurazione del tuo Serveur Cloud. - Per aumentare questo limite su hosting condiviso, migra su Serveur Cloud.
- Anche se è possibile aumentare questo valore dal Manager Infomaniak, il limite di
- Per comprendere come calcolare con precisione i
max_children
necessari, consultate 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 sono completamente utilizzate, l'aumento del valore
max_children
non avrà alcun effetto (Modificare le risorse del Serveur 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 per il quale è necessario aumentare il valore di max_children
su Serveur Cloud, consultare questa altra guida.
Potrai in particolare…
- … scegliere un nuovo valore per
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 Serveur Cloud:
Configurazione Server Cloud | max_children |
---|---|
2 CPU / 6 GB RAM | 20 |
4 CPU / 12 GB RAM | quaranta |
6 CPU / 18 GB RAM | sessanta |
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 GB RAM | 320 |
Questa guida spiega come modificare le variabili dell'estensione PHP-CLI che è disponibile di default su Serveur Cloud Infomaniak.
Modificare le variabili PHP_CLI
Per accedere alle estensioni PHP del Serveur Cloud:
- Clicca qui per accedere alla gestione del tuo Serveur Cloud sul Manager Infomaniak (hai bisogno di aiuto?).
- Fai clic direttamente sul nome assegnato al Serveur Cloud interessato.
- Clicca su Estensioni PHP nel menu laterale sinistro.
- Clicca sul menu azione ⋮ a destra di PHP-CLI nella tabella visualizzata.
- 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 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/include
Consulta questa guida su phpinfo per verificare che la tua nuova direttiva sia stata applicata.
Questa guida spiega come modificare la configurazione di un VPS Cloud / VPS Lite.
Modificare la dimensione dello storage su VPS Cloud / VPS Lite
Per accedere a VPS Cloud / VPS Lite:
- Clicca qui per accedere alla gestione del tuo prodotto su Manager Infomaniak (hai bisogno di aiuto?).
- Clicca sul menu azione ⋮ a destra dell'oggetto interessato nella tabella visualizzata.
- Clicca su Modifica offerta:
- Effettuate le regolazioni desiderate e completate la procedura in basso:
- È necessario espandere il volume dopo aver aumentato lo spazio di archiviazione.
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.
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 Serveur 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 da utilizzare solo se non c'è RAM libera, anche se questa è spesso la sua principale funzione.
Se desideri saperne di più, esiste un parametro "swappiness" che consente 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 Serveur Cloud Infomaniak.
Prerequisiti
- Disporre di un Serveur 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:
- Nome host:
localhost
o127.0.0.1
- Porta :
9200
- Prefisso :
magento2
⚠️ Per ulteriori assistenza contattate un partner o lanciate gratuitamente una richiesta di offerta — scoprite anche il ruolo dell'hosting provider.
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:
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 quante indirizzi IP desiderati),
- … lo strumento Newsletter secondo le vostre esigenze.