Questo articolo presenta le nozioni di base su vhost e server block.
Controlla lo stato del server web
I server Web più comuni eseguiti su Linux® sono Apache®(httpd o apache2 ) e NGINX®. Plesk® è una piattaforma GUI per la gestione di siti Web. Se hai installato Plesk, usa questo articolo come guida per comprendere i vhost.
Per impostazione predefinita, i server Web consentono il traffico HTTP attraverso la porta 80
e il traffico HTTPS(sicuro) attraverso la porta 443
.
Per trovare il server web che gira sulle porte 80
e 443
, inserisci il seguente comando:
# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6 0 0 :::80 :::* LISTEN 2549/httpd
tcp6 0 0 :::443 :::* LISTEN 2549/httpd
Per verificare lo stato di un server web, eseguire uno dei comandi mostrati nella tabella seguente:
Tipo di server web | Comando |
---|---|
httpd | service httpd status |
o | |
systemctl status httpd | |
apache2 | service apache2 status |
o | |
systemctl status apache2 | |
nginx | service nginx status |
o | |
systemctl status nginx | |
Plesk | service psa status |
o | |
systemctl status psa |
In Plesk, per controllare lo stato e identificare quale server web è in uso, immetti il seguente comando:
# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'
Controlla la configurazione dei vhost
Un server Web (o un pool di server Web) può ospitare diversi siti Web utilizzando host virtuali (vhost). I Vhost consentono a diversi siti Web di condividere risorse da un server fisico.
I Vhost possono essere basati su IP o basati su nomi. I vhost basati su IP assegnano un indirizzo IP diverso a un sito Web e basato sul nome vhosts assegna più nomi host a un singolo indirizzo IP. I Vhost tengono traccia dei siti Web in un server Web, specificando la configurazione di ciascun sito Web.
Per verificare la configurazione di vhosts in Apache, inserisci uno dei seguenti comandi:
# httpd -S
o
# apache2ctl -S
*:80 example.com (/etc/httpd/vhost.d/example.com.conf:1)
Per leggere il contenuto di un file di configurazione vhost, immettere il seguente comando:
# cat /etc/httpd/vhost.d/example.com.conf
Le voci nel file di configurazione di vhosts includono:
- :80 o :443 :Queste voci specificano se il sito Web utilizza HTTP (
80
) o HTTPS (443
). - DocumentRoot :il percorso della directory dei file del sito Web.
- Nomeserver :il nome di dominio del sito web.
- ServerAlias :Qualsiasi altro nome di dominio del sito Web che desideri reindirizzare al Nomeserver dominio. Di solito utilizzi domini del tipo www.domain , ma puoi anche utilizzare altri domini o sottodomini.
- Registro errori :il percorso della directory e il nome dei log degli errori.
- Porta 443 :La configurazione SSL. Commenta questa sezione se il sito Web non dispone di un certificato SSL valido.
- File SSL :i tre percorsi file SSL necessari per un server HTTPS sicuro.
L'esempio seguente mostra un file di configurazione di vhosts:
<VirtualHost *:80>
DocumentRoot "/var/www/vhosts/example.com/httpdocs"
ServerName "example.com"
ServerAlias "www.example.com"
<Directory /var/www/vhosts/example.com/httpdocs>
AllowOverride All
Options +FollowSymlinks
</Directory>
DirectoryIndex index.html index.php index.htm
# Logging
CustomLog /var/log/httpd/example.com-access_log combined
ErrorLog /var/log/httpd/example.com-error_log
</VirtualHost>
#<VirtualHost *:443>
# DocumentRoot "/var/www/vhosts/example.com/httpdocs"
# ServerName "example.com"
# ServerAlias "www.example.com"
# <Directory /var/www/vhosts/example.com/httpdocs>
# AllowOverride All
# Options +FollowSymlinks
# </Directory>
# DirectoryIndex index.html index.php index.htm
# # SSL Configuration
# SSLEngine On
# SSLCertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.crt
# SSLCACertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.ca
# SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2021-example.com.key
#
# # Logging
# CustomLog /var/log/httpd/example.com-ssl_access_log combined
# ErrorLog /var/log/httpd/example.com-ssl_error_log
#</VirtualHost>
Per copiare il file di configurazione di un vhost esistente per crearne uno nuovo, immetti il seguente comando:
# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
Modifica il nuovo file di configurazione di vhost come richiesto. Ad esempio, potresti dover commentare le impostazioni che rendono la porta 443
attivo.
Per trovare la posizione di DocumentRoot in un file di configurazione vhost, inserisci il seguente comando:
# grep Doc /etc/httpd/vhost.d/example.com.conf
DocumentRoot /var/www/vhosts/example.com
Crea un nuovo vhost
Utilizzare le seguenti istruzioni per creare un nuovo host virtuale:
-
Se possibile, copia un host virtuale esistente per mantenere le impostazioni coerenti. Usa un editor di testo o uno strumento come
vim
,nano
,sed, or
awk`. -
Crea una nuova DocumentRoot directory. Il sistema crea automaticamente i registri personalizzati ed errori. Esegui il seguente comando:
# mkdir -p /docroot
-
Verifica che il server web non invii errori:
# httpd -t
-
Esegui un riavvio regolare sul server Web per incorporare le modifiche con interruzioni minime nel tuo ambiente live:
# service httpd graceful
-
Controlla di nuovo il server web:
# httpd -t; service httpd status
Controlla e risolvi le modifiche alla configurazione di vhost
Per controllare gli errori in Apache, usa uno dei seguenti comandi:
# httpd -t
o
# apache2ctl -t
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Per controllare gli errori in NGINX, usa il seguente comando:
# nginx -t
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Nota :La clausola Impossibile determinare in modo affidabile è comune e non significa un errore. Di solito puoi ignorarlo.
L'esempio seguente mostra un errore di esempio:
# httpd -t
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK
Risolvi questo errore creando una DocumentRoot :
# mkdir -p /var/www/vhosts/example.com
Un altro errore di esempio:
# httpd -t
AH00526: Syntax error on line 5 of /etc/httpd/vhost.d/example.com.conf:
Invalid command 'oops', perhaps misspelled or defined by a module not
included in the server configuration
La parola ops è nel file vhost e Apache non sa come interpretarlo. Puoi usare vim , nano o un altro editor di testo per correggere l'errore.
Riavvia un server web
Il server Web riconosce le modifiche apportate alla configurazione di vhosts dopo un riavvio. I thread correnti possono terminare prima che avvenga il riavvio con il aggraziato opzione.
Per eseguire un riavvio regolare su Apache, inserisci uno dei seguenti comandi:
# service httpd graceful
o
# service apache2 graceful
Di seguito sono riportate le best practice per evitare interruzioni del servizio dopo aver modificato la configurazione di vhosts:
- Esegui il backup del server web.
- Apporta le modifiche.
- Fai un buon riavvio.
- Assicurati che il server web funzioni senza errori.
È importante evitare il più possibile i tempi di inattività in un ambiente live, il che significa che dopo aver riavviato il server Web, è necessario eseguire i controlli il più rapidamente possibile. Per fare ciò, raggruppa tutti i comandi su una riga.
Per eseguire un riavvio regolare su Apache e verificare la presenza di errori, immettere uno dei seguenti comandi:
# service httpd graceful; httpd -t; service httpd status | grep running
o
# service apache2 graceful; apache2ctl -t; service apache2 status | grep running
AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Redirecting to /bin/systemctl status httpd.service
Active: active (running) (Result: exit-code) since Mon 2021-01-18 12:53:06 GMT; 2 months 19 days ago
Per riavviare NGINX e verificare che sia in esecuzione, inserisci i seguenti comandi:
# nginx -s reload; nginx -t; service nginx status
Utilizza la scheda Feedback per inserire commenti o porre domande. Puoi anche avviare una conversazione con noi.