Introduzione
Nginx è uno dei server web più popolari al mondo ed è responsabile dell’hosting di alcuni dei siti più grandi e ad alto traffico su Internet. È una scelta leggera che può essere utilizzata sia come server web che come reverse proxy.
In questa guida, vedrai come installare Nginx sul tuo server Rocky Linux 9, regolare il firewall, gestire il processo Nginx e configurare blocchi server per ospitare più di un dominio da un singolo server.
Prerequisiti
Prima di iniziare questa guida, dovresti avere un utente regolare, non root, con privilegi sudo configurato sul tuo server. Puoi imparare come configurare un account utente regolare seguendo la nostra Guida all’installazione iniziale del server per Rocky Linux 9.
Vorrai anche opzionalmente aver registrato un nome di dominio prima di completare gli ultimi passaggi di questo tutorial. Per saperne di più sulla configurazione di un nome di dominio con DigitalOcean, consulta la nostra Introduzione a DigitalOcean DNS.
Quando hai un account disponibile, accedi come tuo utente non root per iniziare.
Fase 1 – Installazione di Nginx
Poiché Nginx è disponibile nei repository predefiniti di Rocky, è possibile installarlo con un singolo comando utilizzando il gestore di pacchetti dnf
.
Installare il pacchetto nginx
con il comando dnf install
:
- sudo dnf install nginx
Quando richiesto, inserire y
per confermare l’installazione di nginx
. Successivamente, dnf
installerà Nginx e tutte le dipendenze necessarie sul server.
Dopo aver completato l’installazione, eseguire i seguenti comandi per abilitare e avviare il server web:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Ciò farà sì che Nginx si riavvii automaticamente ogni volta che il server viene riavviato. Il tuo nuovo server web dovrebbe ora essere attivo, ma prima di testarlo, probabilmente sarà necessario apportare una modifica alla configurazione del firewall.
Fase 2 – Regolazione del Firewall
Se hai abilitato il firewall firewalld
come parte della guida iniziale all’installazione del server per Rocky Linux 9, sarà necessario regolare le impostazioni del firewall per consentire connessioni esterne al tuo server web Nginx, che opera sulla porta 80
per impostazione predefinita.
Esegui il seguente comando per abilitare permanentemente le connessioni HTTP sulla porta 80
:
- sudo firewall-cmd --permanent --add-service=http
Per verificare che il servizio firewall http
sia stato aggiunto correttamente, puoi eseguire:
- sudo firewall-cmd --permanent --list-all
Vedrai un output simile a questo:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Per applicare le modifiche, sarà necessario ricaricare il servizio firewall:
- sudo firewall-cmd --reload
Il tuo server web dovrebbe ora essere accessibile ai visitatori esterni.
Passaggio 3 – Verifica del tuo server Web
A questo punto, il tuo server web dovrebbe essere attivo e in esecuzione.
Puoi utilizzare il comando systemctl status
per assicurarti che il servizio sia in esecuzione:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
Come confermato da questo output, il servizio è stato avviato con successo. Tuttavia, il modo migliore per testarlo è richiedere effettivamente una pagina da Nginx.
Puoi accedere alla pagina predefinita di Nginx per confermare che il software funzioni correttamente navigando all’indirizzo IP del tuo server. Se non conosci l’indirizzo IP del tuo server, puoi trovarlo utilizzando lo strumento icanhazip.com, che ti darà il tuo indirizzo IP pubblico come ricevuto da un’altra posizione su internet:
- curl -4 icanhazip.com
Quando hai l’indirizzo IP del tuo server, inseriscilo nella barra degli indirizzi del tuo browser:
http://your_server_ip
Dovresti ricevere la pagina predefinita di Nginx:
Se sei su questa pagina, il tuo server è in esecuzione correttamente e pronto per essere gestito.
Fase 4 – Gestione del processo Nginx
Ora che hai il tuo server web attivo, vediamo alcune comandi di gestione del servizio.
Per fermare il tuo server web, utilizza systemctl stop
:
- sudo systemctl stop nginx
Per avviare il server web quando è fermo, utilizza systemctl start
:
- sudo systemctl start nginx
Per fermare e poi riavviare il servizio, utilizza systemctl restart
:
- sudo systemctl restart nginx
Se stai solo apportando modifiche alla configurazione, Nginx può spesso ricaricare senza interrompere le connessioni. Per fare ciò, utilizza systemctl reload
:
- sudo systemctl reload nginx
In precedenza in questo tutorial, hai configurato Nginx per avviarsi automaticamente all’avvio del server. Puoi disabilitare questo comportamento utilizzando systemctl disable
:
- sudo systemctl disable nginx
Per riabilitare il servizio all’avvio, puoi digitare:
- sudo systemctl enable nginx
Fase 5 – Conoscere i file e le directory importanti di Nginx
Ora che sai come gestire il servizio Nginx, dovresti dedicare qualche minuto a familiarizzare con alcune directory e file importanti.
Contenuto
/usr/share/nginx/html
: Il contenuto web effettivo, che per impostazione predefinita consiste solo nella pagina predefinita di Nginx che hai visto in precedenza, è servito dalla directory/usr/share/nginx/html
. Questo può essere modificato alterando i file di configurazione di Nginx.
Configurazione del Server
/etc/nginx
: La directory di configurazione di Nginx. Tutti i file di configurazione di Nginx risiedono qui./etc/nginx/nginx.conf
: Il file di configurazione principale di Nginx. Questo può essere modificato per apportare modifiche alla configurazione globale di Nginx./etc/nginx/conf.d/
: Questa directory contiene file di configurazione dei blocchi del server, dove è possibile definire i siti web ospitati all’interno di Nginx. Un approccio tipico è avere ciascun sito web in un file separato denominato come il nome di dominio del sito, ad esempioyour_domain.conf
.
Registrazioni del Server
/var/log/nginx/access.log
: Ogni richiesta al tuo server web viene registrata in questo file di log a meno che Nginx non sia configurato diversamente./var/log/nginx/error.log
: Tutti gli errori di Nginx verranno registrati in questo log.
Ora dovresti essere pronto per configurare il sito per ospitare uno o più domini.
Passaggio 6 – Configurazione dei blocchi del server (opzionale)
Quando si utilizza il server web Nginx, i “blocchi del server” (simili agli hosts virtuali in Apache) possono essere utilizzati per organizzare i dettagli di configurazione e ospitare più di un dominio da un singolo server. Su Rocky Linux 9, i blocchi del server sono definiti nei file .conf
situati in /etc/nginx/conf.d
. Configureremo un dominio chiamato your_domain
, ma dovresti sostituire questo con il tuo nome di dominio.
Per impostazione predefinita, Nginx su Rocky Linux 9 è configurato per servire i documenti da una directory in /usr/share/nginx/html
. Sebbene ciò funzioni bene per un singolo sito, può diventare ingestibile se si ospitano più siti. Invece di modificare /usr/share/nginx/html
, creerai una struttura di directory all’interno di /var/www
per il sito your_domain, lasciando /usr/share/nginx/html
al suo posto come directory predefinita da servire se una richiesta del client non corrisponde ad altri siti.
Crea la directory per your_domain come segue, utilizzando l’opzione -p
per creare eventuali directory padre necessarie:
- sudo mkdir -p /var/www/your_domain/html
Next, assegna la proprietà della directory con la variabile di ambiente $USER
, che dovrebbe fare riferimento al tuo utente di sistema corrente:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Ora creerai una pagina di esempio index.html
per testare la configurazione del blocco del server. L’editor di testo predefinito fornito con Rocky Linux 9 è vi
. vi
è un editor di testo estremamente potente, ma può essere un po’ oscuro per gli utenti che non ne hanno esperienza. Potresti voler installare un editor più user-friendly come nano
per facilitare la modifica dei file di configurazione sul tuo server Rocky Linux 9:
- sudo dnf install nano
Successivamente, crea una pagina di esempio index.html
usando nano
o il tuo editor preferito:
- nano /var/www/your_domain/html/index.html
All’interno, aggiungi il seguente HTML di esempio:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Salva e chiudi il file quando hai finito. Se stai usando nano
, puoi salvare e uscire premendo CTRL + X
, quindi, quando richiesto, Y
e poi Invio.
Per consentire a Nginx di servire questo contenuto, dovrai creare un blocco server con direttive che puntano alla tua radice web personalizzata. Crea un nuovo blocco server in /etc/nginx/conf.d/tuo_dominio.conf
:
- sudo nano /etc/nginx/conf.d/your_domain.conf
Incolla il seguente blocco di configurazione:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Nota che abbiamo aggiornato la configurazione root
con la nostra nuova directory e il server_name
con il nostro nome di dominio. Salva e chiudi il file.
Due blocchi server sono ora abilitati e configurati per rispondere alle richieste in base alle loro direttive listen
e server_name
(puoi leggere di più su come Nginx elabora queste direttive qui):
your_domain
: Risponderà alle richieste peryour_domain
ewww.your_domain
.default
: Risponderà a qualsiasi richiesta sulla porta 80 che non corrisponda agli altri due blocchi.
Successivamente, verifica che non ci siano errori di sintassi in nessuno dei tuoi file Nginx, utilizzando nginx -t
:
- sudo nginx -t
Se non ci sono problemi, riavvia Nginx per abilitare le tue modifiche:
- sudo systemctl restart nginx
Prima di poter testare le modifiche dal tuo browser, dovrai aggiornare i contesti di sicurezza SELinux del tuo server in modo che Nginx sia autorizzato a servire contenuti dalla directory /var/www/your_domain
.
Questo aggiornamento del contesto chcon
consentirà che la tua radice del documento personalizzata venga servita come contenuto HTTP:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginx dovrebbe ora essere in grado di servire il nome del tuo dominio. Puoi testarlo navigando su http://your_domain
, dove dovresti vedere qualcosa del genere:
Conclusione
Ora che hai il tuo server web installato, hai molte opzioni per il tipo di contenuto da servire e le tecnologie che vuoi utilizzare per creare un’esperienza più ricca.
Per configurare HTTPS per il tuo nome di dominio con un certificato SSL gratuito utilizzando Let’s Encrypt, dovresti procedere con Come Sicurizzare Nginx con Let’s Encrypt su Rocky Linux 9.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9