Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Guide Open Source

GUIDE E MANUALI DEL MONDO LINUX E CMS

Come Installare e Configurare Caddy Web Server con PHP su Fedora 34 / CentOS 8

Caddy è un open-source web server scritto in linguaggio Go. Esso fornisce HTTP/3 supporto TLS v1.3, automatico la configurazione SSL con Cifratura, reverse proxy, e supporta più di un plugin per estendere le sue funzionalità. Ha il vantaggio di tutta la sua configurazione è servita da un unico file, non importa quanti siti hai bisogno per organizzare.

Questo tutorial vi spiega l’installazione e la configurazione Caddy e PHP su Fedora 34 e CentOS 8 server. Ci occuperemo di come host singolo e più siti e utilizzo di proxy inverso insieme ad altre caratteristiche di sicurezza.

Prerequisiti

  • Fedora 34 o CentOS server 8
  • Un utente non-root con sudo privilegi
  • Un nome di dominio indicando l’indirizzo IP del server di
  • SELinux disabilitato.
    $ sudo setenforce 0
    
  • Assicurarsi che tutto è aggiornato.
    $ sudo dnf update
    

Passo 1 – Configurazione Firewall

Il primo passo è quello di configurare il Firewall per aprire porte HTTP e HTTPS. Fedora e CentOS venire con il Firewalld firewall preinstallato.

Controllare se il firewall è in esecuzione.

$ sudo firewall-cmd --state

Si dovrebbe ottenere il seguente output.

running

Controllare la corrente ammessi servizi/porte.

$ sudo firewall-cmd --permanent --list-services

Dovrebbe essere visualizzato il seguente output.

dhcpv6-client mdns ssh

Permettere porte HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Verificare nuovamente lo stato del firewall.

$ sudo firewall-cmd --permanent --list-services

Si dovrebbe vedere una simile uscita.

dhcpv6-client http https mdns ssh

Ricaricare il Firewall.

$ sudo systemctl reload firewalld

Fase 2 – Installare Il Caddy

Il Primo passo è quello di installare il server. La procedura di installazione rimangono invariati per Fedora 34 e CentOS 8.

$ sudo dnf install 'dnf-command(copr)'
$ sudo dnf copr enable @caddy/caddy
$ sudo dnf install caddy

Si può verificare l’installazione con il comando seguente.

$ caddy version
v2.4.3 h1:Y1FaV2N4WO3rBqxSYA8UZsZTQdN+PwcoOcAiZTM8C0I=

Passo 3 – Caddy Nozioni Di Base Sulla Configurazione

Caddy utilizza JSON come formato primario per la conservazione o la scrittura di configurazione. È il modo più flessibile di scrivere la configurazione e supporta tutti i Caddy caratteristiche. Ma se non sai come scrivere il file JSON, Caddy offre un modo più semplice, in forma di Caddyfile.

Fedora / CentOS pacchetto include un Caddyfile a /etc/caddy/Caddyfile. Dovrebbe apparire come il seguente (ignorando i commenti)

:80 {
        root * /usr/share/caddy
        file_server
}

Attivare e avviare il caddy demone.

$ sudo systemctl enable --now caddy

È possibile aprire l’URL http://youripaddress da controllare. Si dovrebbe vedere la seguente pagina di benvenuto.

Caddy Pagina Di Benvenuto

Caddy offre molte funzioni e configurazioni, in modo che possiamo solo andare con il importanti per servire il nostro sito web. La configurazione di default serve su HTTP, viene specificato come :80. La root direttiva indica Caddy per la ricerca dei file, la /usr/share/caddy directory.

La file_server direttiva indica Caddy di agire come un server di file, il che significa che servono solo i file statici, oltre all’indirizzo predefinito.

Configurazione Caddy per un sito HTML

Cerchiamo di creare una base caddy file di configurazione per servire un sito web statico.

Creare una directory per ospitare il vostro sito web e memorizzare i file di registro.

$ sudo mkdir -p /var/www/example.com/html
$ sudo mkdir /var/log/caddy

Impostare la proprietà della directory Caddy.

$ sudo chown caddy:caddy /var/www/example.com/html -R
$ sudo chown caddy:caddy /var/log/caddy

Creare un file HTML di prova e aperto per la modifica.

$ sudo nano /var/www/example.com/html/index.html

Aggiungere il codice riportato di seguito.

<!DOCTYPE html>
<html>
<head>
<title>Hello from Caddy!</title>
</head>
<body>
<h1>Hello, from Caddy!</h1>
</body>
</html>

Premere Ctrl + X per chiudere l’editor e premere Y quando viene richiesto di salvare il file.

Aprire il Caddyfile per la modifica.

$ sudo nano /etc/caddy/Caddyfile

Sostituire il codice esistente con il seguente.

example.com {
    root * /var/www/example.com/html
    file_server
    encode gzip

    log {
        output file /var/log/caddy/example.access.log
    }

    @static {
        file
        path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.pdf *.webp
    }
    header @static Cache-Control max-age=5184000

    tls name@example.com
}

Premere Ctrl + X per chiudere l’editor e premere Y quando viene richiesto di salvare il file.

Cerchiamo di passare attraverso tutte le direttive nel file. La encode gzip direttiva indica Caddy per comprimere i file utilizzando la compressione Gzip.

La log direttiva uscite il log di accesso per il sito per il /var/log/caddy/example.access.log file. Per impostazione predefinita, Caddy ruota file di registro quando si raggiungono i 100 MB. Ruotato i file vengono cancellati dopo 90 giorni o quando ci sono più di 10 ruotato registri. È possibile modificare i parametri di default nel modo seguente.

log {
    output file /var/log/caddy/example.access.log {
        roll_size 10MB
        roll_keep 5
        roll_keep_for 240h
    }
}

Nel codice di cui sopra, la rotazione dei file di log sono limitato a 10 MB e cancellati dopo 10 giorni (240 ore) o quando ci sono più di 5 ruotato registri.

Caddy creare e installare il certificato SSL automaticamente senza alcun intervento. La tls direttiva permette di fornire ulteriori opzioni per configurare HTTPS come l’indirizzo email utilizzato per l’ottenimento di Let’s Encrypt rapporti.

La header direttiva abilita la Cache di controllo su tutti i file statici (immagini/javascript/CSS file). È possibile aggiungere ulteriori estensioni di file o copiare il codice per impostare la durata per diversi formati di file. Sarà necessario modificare il valore static di qualcosa di diverso, perché è un nome di riferimento.

Una volta terminato, è possibile convalidare la configurazione utilizzando il comando riportato di seguito.

$ caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile

Dobbiamo usare l’ --adapter caddyfile opzione, perché, per impostazione predefinita, il comando convalida solo JSON configurazioni.

Se si ottiene il seguente messaggio di avviso, si può risolvere facilmente con un singolo comando.

WARN    input is not formatted with 'caddy fmt' {"adapter": "caddyfile", "file": "/etc/caddy/Caddyfile", "line": 2}

Eseguire il seguente comando per correggere l’errore.

$ caddy fmt --overwrite /etc/caddy/Caddyfile

Il comando sopra, formati e sovrascrive il Caddyfile.

Riavviare Caddy per attivare la configurazione. Sarà necessario riavviare il server ogni volta che si apporta una modifica nella configurazione.

$ sudo systemctl restart caddy

Aperto nel browser, e si dovrebbe vedere la seguente pagina che significa, per il funzionamento della configurazione.

Caddy FrontPage

La configurazione di Più Siti in Caddy

È possibile configurare più siti in un unico caddy file. Per fare questo, creare blocchi separati per ogni sito, nel modo seguente.

example1.com {
	root * /var/www/example1.com/html
	...
}

example2.com {
	root * /var/www/example2.com/html
	...
}

Questo metodo va bene per un paio di siti, ma un singolo può ottenere abbastanza grande e difficile da mantenere se si ospitano più siti.

Creare la directory `/etc/caddy/caddyconf.

$ sudo mkdir /etc/caddy/caddyconf

Ora è possibile importare i file di configurazione nella directory nel vostro /etc/caddty/caddyfile superiore del file.

import caddyconf/*.conf

Il passo finale è quello di creare i singoli file di configurazione per ogni sito.

La configurazione di PHP siti

Finora abbiamo parlato solo di servire siti statici utilizzando Caddy. È possibile utilizzare Caddy facile per servire dinamico PHP siti come bene. Per abilitare il supporto PHP, aggiungere il seguente codice all’interno del tuo sito blocco.

example1.com {
	root * /var/www/example1.com/html
	...
	php_fastcgi unix//run/php-fpm/www.sock
}

Avrete anche bisogno di installazione di PHP.

$ sudo dnf install php-fpm php-cli php-gd

È possibile installare il modulo PHP che si richiedono. Sarà inoltre necessario configurare il file /etc/php-fpm.d/www.conf. Aprire il file per la modifica.

$ sudo nano /etc/php-fpm.d/www.conf

Abbiamo bisogno di impostare l’utente Unix/gruppo di PHP processi di caddy. Trovare user=apache e group=apache righe del file e modificarli a nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = caddy
; RPM: Keep a group allowed to write in log dir.
group = caddy
...

Trovare la linea listen.acl_users = apache,nginx e cambiare il suo valore per il seguente.

...
listen.acl_users = apache,nginx,caddy
...

Salvare il file premendo Ctrl + X e l’immissione di Y quando richiesto.

Avviare il PHP-fpm processo.

$ sudo systemctl start php-fpm

Per testare la tua configurazione PHP, creare un file test.php nella html cartella.

$ sudo nano /var/www/example.com/html/test.php

Aggiungere il seguente contenuto e salvare il file premendo Ctrl + X e l’immissione di Y quando richiesto.

<?php phpinfo();

Lancio http://example.com/test.php nel browser web, e si dovrebbe vedere la seguente.

Caddy PHP della Pagina di Prova

Configurazione Del Proxy Inverso

Caddy può anche essere utilizzato come un server proxy inverso. Per farlo, utilizzare il codice riportato di seguito.

example1.com {
	...
	reverse_proxy localhost:8000 {
		header_up Host {http.reverse_proxy.header.X-Forwarded-Host}
	}
}

Passo 4 – Caddy Opzioni Globali

Il Caddyfile permette di impostare alcune opzioni che sarà applicabile a livello globale, vale a dire, si applicano a tutti i siti. È utile per definire le opzioni globali, in modo che non hanno a ridichiarare in ogni blocco del server.

Si consiglia di includere le opzioni globali in cima dei vostri Caddyfile. Ci sono un sacco di opzioni che è possibile impostare a livello globale. Andiamo attraverso alcuni importanti solo. Per il resto, si dovrebbe consultare Caddy documentazione.

Qui ci sono alcune opzioni di default che è possibile utilizzare nel vostro Caddyfile.

{	
	#TLS Options
	email name@example.com

	servers	:443 {
		protocol {
			experimental_http3
		}
		max_header_size 5mb
	}
	
	servers :80 {
		protocol {
			allow_h2c
		}
		max_header_size 5mb
	}
}

Nel codice di cui sopra email consente di specificare l’ID e-mail utilizzato per la registrazione del certificato SSL con Let’s Encrypt autorità. OCSP pinzatura migliora le prestazioni dei siti HTTPS, fornendo revoche di informazioni per il browser automaticamente. L’ max_header_size opzione consente di specificare la dimensione della richiesta del client HTTP headers per essere analizzato.

Abbiamo anche attivato HTTP/3 protocollo per i siti HTTPS e HTTP/2 supporto per siti HTTP. Queste sono le caratteristiche sperimentali e probabilmente sarà rimosso alla fine, in modo da prendere cura di prima di consentire loro.

Passo 5 – Miglioramento Della Sicurezza

Abilitare l’Autenticazione HTTP

È possibile attivare semplice l’autenticazione HTTP, per una determinata directory. Innanzitutto, è necessario creare un sistema di autenticazione delle credenziali per farlo.

Caddy accetta solo gli hash della password nella configurazione. Quindi, è necessario creare un hash della password. Eseguire il seguente comando per farlo.

$ caddy hash-password
Enter password:
Confirm password:
JDJhJDEwJEVCNmdaNEg2Ti5iejRMYkF3MFZhZ3VtV3E1SzBWZEZ5Q3VWc0tzOEJwZE9TaFlZdEVkZDhX

Una volta che hai la password pronto, immettere il seguente codice nel tuo Caddyfile.

basicauth /secret/* {
	John JDJhJDEwJEVCNmdaNEg2Ti5iejRMYkF3MFZhZ3VtV3E1SzBWZEZ5Q3VWc0tzOEJwZE9TaFlZdEVkZDhX
}

Il comando di cui sopra sarà proteggere la /secret directory con le credenziali appena create.

L’indurimento del Sito di Sicurezza e di abilitazione HSTS

Ci sono altre configurazioni di sicurezza è possibile aggiungere per proteggere i vostri siti. Per fare questo, si può creare un altro file /etc/caddy/caddy_security.conf.

$ sudo nano /etc/caddy/caddy_security.conf

Aggiungere il codice riportato di seguito.

header {
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    X-Xss-Protection "1; mode=block"
    X-Content-Type-Options "nosniff"
    X-Frame-Options "DENY"
    Permissions-Policy "interest-cohort=()"
    Content-Security-Policy "upgrade-insecure-requests"
    Referrer-Policy "strict-origin-when-cross-origin"
    Cache-Control "public, max-age=15, must-revalidate"
    Feature-Policy "accelerometer 'none'; ambient-light-sensor 'none'; autoplay 'self'; camera 'none'; encrypted-media 'none'; fullscreen 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; payment 'none'; picture-in-picture *; speaker 'none'; sync-xhr 'none'; usb 'none'; vr 'none'"
}

Il codice di cui sopra consente di attivare/implementa il seguente.

  1. Consente HSTS supporto per il sito e tutti i suoi sottodomini.
  2. Abilita il filtro XSS.
  3. Impedisce Content/MIME Sniffing.
  4. Impedisce che il tuo sito venga caricato all’interno di un IFRAME.
  5. Esso impedisce che il tuo sito sia incluso in FIOCCO di monitoraggio di prove.
  6. Aggiunge una politica di sicurezza dei Contenuti su come gli agenti utente trattare insicuro Url.
  7. Implementa un referente criterio, in modo che solo il referrer è inviato per il cross-origin richieste se il protocollo dice la stessa cosa.
  8. Funzione Politica fornisce un meccanismo per attivare e disattivare alcune funzioni del browser.

A quel punto, importare il file in un qualsiasi sito di blocchi che si desidera.

example.com {
	...
	import /etc/caddy/caddy_security.conf
}

Riavviare il server per implementare la modifica.

Conclusione

Con questo si conclude il tutorial su come installare e configurare il Caddy web server su Fedora 34 / CentOS 8 server. Se avete domande, postare commenti qui sotto.

Piaciuto l'articolo? Condividilo sui social!

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp