Come installare Nginx su Rocky Linux 9

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:

  1. 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:

  1. sudo systemctl enable nginx
  2. 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:

  1. sudo firewall-cmd --permanent --add-service=http

Per verificare che il servizio firewall http sia stato aggiunto correttamente, puoi eseguire:

  1. sudo firewall-cmd --permanent --list-all

Vedrai un output simile a questo:

Output
public 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:

  1. 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:

  1. 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:

  1. 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:

  1. sudo systemctl stop nginx

Per avviare il server web quando è fermo, utilizza systemctl start:

  1. sudo systemctl start nginx

Per fermare e poi riavviare il servizio, utilizza systemctl restart:

  1. 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:

  1. 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:

  1. sudo systemctl disable nginx

Per riabilitare il servizio all’avvio, puoi digitare:

  1. 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 esempio your_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:

  1. 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:

  1. 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:

  1. sudo dnf install nano

Successivamente, crea una pagina di esempio index.html usando nano o il tuo editor preferito:

  1. nano /var/www/your_domain/html/index.html

All’interno, aggiungi il seguente HTML di esempio:

/var/www/your_domain/html/index.html
<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:

  1. sudo nano /etc/nginx/conf.d/your_domain.conf

Incolla il seguente blocco di configurazione:

/etc/nginx/conf.d/your_domain.conf
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 per your_domain e www.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:

  1. sudo nginx -t

Se non ci sono problemi, riavvia Nginx per abilitare le tue modifiche:

  1. 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:

  1. 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