Come configurare smartphone e PC. Portale informativo
  • casa
  • Consigli
  • Nginx: configurazione e installazione. Modificare Nginx

Nginx: configurazione e installazione. Modificare Nginx

Buona giornata!

Sì, secondo me, Nginx è molte volte più veloce del server Apache. Alcuni sosterranno che Apache può essere ottimizzato e diventerà anche veloce. Questo è vero, ma ricorda che Nginx può anche essere molto overcloccato. Scriverò sicuramente un articolo separato sull'ottimizzazione in dettaglio.

Qualche teoria su Nginx + php-fpm

Apache php è un plug-in nel server web, un tale pacchetto è lento e consuma molte risorse. A causa di questa sfortunata architettura, Apache di solito non può gestire più di 200-300 richieste al secondo, anche su un server molto potente. In Nginx viene utilizzata un'architettura diversa: il server Web Nginx stesso elabora solo le richieste di statica (immagini, css, ecc.) e l'esecuzione di php viene assegnata a un altro server software: php-fpm. Php-fpm (FastCGI Process Manager) è un software completamente autonomo, può essere installato sullo stesso server con Nginx (per piccoli progetti) o portato su un server separato. I progetti di grandi dimensioni di solito eseguono più server con Nginx, php-fpm e database.

Sostituendo il server Apache con Nginx + php-fpm, puoi velocizzare l'elaborazione delle richieste degli utenti e risparmiare notevolmente sull'hardware. Un progetto web con traffico fino a 10.000 visitatori unici al giorno può facilmente vivere sul server virtuale più economico di DigitalOcean per $ 5 al mese. A proposito, se segui questo link - DigitalOcean, riceverai $ 10 al momento della registrazione, ovvero 2 mesi di utilizzo del server virtuale. Non ci sono condizioni aggiuntive lì.

Ma veniamo agli affari. Descriverò il processo di installazione e configurazione utilizzando CentOS 6.x come esempio, ma non differirà molto per altre distribuzioni Linux.

Installazione di Nginx:

  • /var/run/php5-fpm.sock dovrebbe essere già presente sul server? in Ubuntu 16.04 non ho trovato tale file in / var / run
  • 1. Installazione del repository Nginx: Non esiste una distribuzione Nginx per impostazione predefinita nelle distribuzioni Linux standard, quindi aggiungiamola al sistema.

    vi /etc/yum.repos.d/nginx.repo


    nome = nginx repo
    baseurl = http: //nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck = 0
    abilitato = 1

    Quindi premere ": wq" e Invio per salvare e uscire. Ecco fatto, ora Nginx è disponibile per l'installazione automatica tramite il gestore di pacchetti yum. Se stai utilizzando una distribuzione Linux diversa, consulta le istruzioni specifiche per il tuo sistema.

    2. Installazione di Nginx dal repository: ora basta eseguire il comando di installazione.

    Installa php-fpm:

    Php-fpm è disponibile per impostazione predefinita su tutte le distribuzioni moderne, quindi installalo:

    Questo installerà il server stesso e tutti i pacchetti ausiliari. Se qualcosa non funziona, puoi creare php-fpm dai sorgenti da solo, per istruzioni dettagliate vai qui.

    Configurazione ed esecuzione di Nginx + php-fpm:

    1. Iniziamo con php-fpm: apri il file di configurazione

    vi /etc/php-fpm.d/www.conf

    e scrivi lì funziona tramite un socket (funzionerà più velocemente in questo modo):

    listen = /var/run/php5-fpm.sock

    cambia la riga "listen =" esistente o aggiungine una nuova ed elimina quella vecchia.

    2. Passiamo ora a Nginx: crea un file di configurazione per il tuo primo sito (sostituisci site1 con il nome del sito, anche se funzionerà così)

    vi /etc/nginx/conf.d/site1.conf

    Di seguito è riportata la configurazione minima, puoi semplicemente copiarla. Tutto ciò che deve essere sostituito è evidenziato in rosso. Questa configurazione è configurata per servire file statici e accedere a un file php - index.php. Tutti i CMS moderni vengono avviati con un file, quindi questa configurazione è adatta per la maggior parte delle attività. Se hai bisogno di eseguire altri file php, scrivili separatamente. In questa configurazione, i file del sito devono essere inseriti nella cartella /home/mysite/public_html/

    server (
    ascolta [indirizzo IP del server]: 80;
    sito nome_server;
    risolutore 8.8.8.8;
    error_log/var/log/nginx/site _error.log warn;
    root/home/sito/public_html;
    access_log/var/log/nginx/site -access.log;
    set di caratteri utf-8;
    indice index.php;
    posizione ~. * (gif | jpg | jpeg | png | ico | swf | txt | pdf | doc | docx | exe | xls | xlsx | stringhe | zip | rar | 7z) $ (
    scade 1 anno;
    }

    Posizione ~.* (Html ​​| htm | js | css) $ (
    scade 1 anno;
    }

    posizione ~ ^ / index.php (
    fastcgi_pass unix: /var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME / home / site /public_html/index.php;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_NAME /index.php;
    }

    Ora metti i tuoi primi file del sito nella cartella /home/site1/public_html/ e siamo pronti per partire.

    3. Esecuzione di nginx + php-fpm:

    servizio nginx start

    servizio php-fpm start

    Se hai fatto tutto correttamente e non hai commesso errori da nessuna parte, il risultato sarà questo:

    Se hai domande o hai bisogno di chiarimenti, fai una domanda o lascia un commento.

    Sono sempre felice di aiutare!

    |

    Nginx è uno dei server web più popolari al mondo per ospitare siti molto grandi e ad alto traffico. In genere utilizza meno risorse di Apache. Può essere utilizzato anche come server proxy inverso.

    Questo tutorial ti guiderà attraverso l'installazione di Nginx su un server Ubuntu 16.04.

    Requisiti

    • Server Ubuntu 16.04.
    • Un utente non root con accesso al comando sudo (maggiori informazioni su questo in).

    Passaggio 1 - Installazione di Nginx

    Il pacchetto Nginx è disponibile nel repository di sistema Ubuntu standard.

    Poiché questa è la prima interazione con il sistema di pacchettizzazione apt nella sessione corrente, l'indice del pacchetto deve essere aggiornato. Successivamente, puoi installare Nginx.

    sudo apt-get update
    sudo apt-get install nginx

    Il gestore dei pacchetti installerà quindi il server web e tutte le sue dipendenze.

    Passaggio 2: configurazione del firewall

    Prima di avviare Nginx, devi configurare il tuo firewall per supportare il traffico di questo servizio. Durante l'installazione, Nginx si registra come servizio con ufw, quindi è molto facile consentire il traffico del server web.

    Apri l'elenco delle impostazioni delle applicazioni ufw:

    sudo ufw elenco di app

    Il comando restituirà:

    Applicazioni disponibili:
    Nginx pieno
    Nginx HTTP
    Nginx HTTPS
    ApriSSH

    Come puoi vedere, ci sono tre profili Nginx nell'elenco:

    • Nginx Full: questo profilo apre la porta 80 (traffico di rete non crittografato) e 443 (traffico TLS / SSL crittografato).
    • Nginx HTTP: profilo per il traffico HTTP non crittografato sulla porta 80.
    • Nginx HTTPS: profilo per traffico crittografato TLS/SSL sulla porta 443.

    Per abilitare un profilo, inserisci:

    sudo ufw allow "Nginx HTTP"

    Assicurati che il profilo sia abilitato:

    Il comando dovrebbe segnalare che il traffico HTTP è consentito:

    Stato: attivo
    All'azione da
    -- ------ ----
    OpenSSH PERMETTI ovunque
    Nginx HTTP CONSENTI ovunque
    OpenSSH (v6) CONSENTI ovunque (v6)
    Nginx HTTP (v6) CONSENTI ovunque (v6)

    Passaggio 3 - Test del server Web

    Una volta installato, Ubuntu 16.04 avvierà automaticamente Nginx. A questo punto, il server web dovrebbe essere attivo e funzionante.

    Per verificare che Nginx sia in esecuzione, interrogare il suo stato sul sistema systemd init.

    stato systemctl nginx
    nginx.service - Un server web ad alte prestazioni e un server proxy inverso
    Caricato: caricato (/lib/systemd/system/nginx.service; abilitato; preset del fornitore: abilitato)
    Attivo: attivo (in corso) da lun 2016-04-18 16:14:00 EDT; 4min 2s fa
    PID principale: 12857 (nginx)
    Gruppo C: /system.slice/nginx.service
    ├─12857 nginx: processo master / usr / sbin / nginx -g demone attivo; master_process attivo
    12858 nginx: processo di lavoro

    Come puoi vedere, il servizio è stato avviato con successo.

    Puoi anche provare a visitare la pagina di destinazione Nginx predefinita. È disponibile nel browser per nome di dominio o indirizzo IP.

    Se non conosci il tuo indirizzo IP, puoi trovarlo utilizzando la riga di comando. Accedere:

    indirizzo ip mostra eth0 | grep inet | awk "(stampa $ 2;)" | sed "s /\/.*$//"

    Il comando restituirà più righe. Controlla ogni indirizzo in un browser.

    Puoi anche scoprire come altri punti della rete vedono il tuo indirizzo IP.

    sudo apt-get install curl
    curl -4 icanhazip.com

    Una volta che conosci il tuo IP, inseriscilo nel tuo browser per assicurarti che il server web funzioni correttamente.

    http: // server_domain_or_IP

    La pagina di destinazione Nginx predefinita dovrebbe apparire sullo schermo:

    Benvenuti a nginx!
    Se vedi questa pagina, il server web nginx è installato correttamente e funziona. È necessaria un'ulteriore configurazione.

    Passaggio 4 - Gestione dei processi Nginx

    Diamo un'occhiata ad alcuni programmi di base per la gestione del server web.

    Per interrompere Nginx, inserisci:

    sudo systemctl stop nginx

    Per eseguire, inserisci:

    sudo systemctl start nginx

    Per riavviare, usa il comando:

    sudo systemctl riavvia nginx

    Per aggiornare le impostazioni di Nginx senza interrompere le connessioni, inserisci il comando:

    sudo systemctl ricarica nginx

    Per impostazione predefinita, Nginx si avvia automaticamente all'avvio del server. Questo comportamento può essere disattivato:

    sudo systemctl disabilita nginx

    Per riprendere l'avvio automatico del servizio, inserire:

    sudo systemctl abilita nginx

    Passaggio 5: file e directory Nginx

    Ora sai come gestire il servizio. È tempo di familiarizzare con i file e le directory importanti di Nginx.

    Contenuto

    • /var/www/htm: questa directory contiene il contenuto del sito corrente. Per impostazione predefinita, contiene solo la pagina di destinazione predefinita che hai già visto. Questa directory può essere modificata nel file di configurazione di Nginx.

    Impostazioni del server

    • /etc/nginx: directory delle impostazioni di nginx in cui sono archiviati tutti i file di configurazione.
    • /etc/nginx/nginx.conf: il file di configurazione principale di Nginx contenente le impostazioni globali del server web.
    • /etc/nginx/site-available: directory contenente i blocchi server configurati (host virtuali) di ogni singolo sito. Nginx non utilizzerà questi blocchi fino a quando non verrà visualizzato un collegamento ad essi nella directory abilitata per i siti (ne parleremo più avanti). In genere, questa directory viene utilizzata per configurare gli host virtuali.
    • /etc/nginx/sites-enabled/: directory contenente i blocchi del server abilitati. Per abilitare il blocco, è necessario creare un collegamento simbolico al file archiviato nella directory dei siti disponibili.
    • /etc/nginx/snippets: questa directory memorizza frammenti di impostazioni che possono essere inclusi nella configurazione di Nginx. In genere, i segmenti di configurazione potenzialmente ripetibili vengono aggiunti come frammenti.

    Registri

    • /var/log/nginx/access.log: questo registro registra tutte le richieste ricevute dal server web Nginx (se non diversamente configurato).
    • /var/log/nginx/error.log: questo registro memorizza tutti i messaggi di errore di Nginx.

    Conclusione

    Il server web Nginx è ora installato e pronto per l'uso. Usalo per servire i contenuti del tuo sito.

    Ciao, caro utente Habrahabr. La mia storia riguarderà come preparare il terreno per progetti di sviluppo web locale nel sistema operativo Ubuntu 16.04.1 LTS.

    In questo articolo, vorrei dissipare e chiarire le possibili difficoltà associate all'installazione e alla configurazione del software necessario per lo sviluppo web moderno, che possono essere affrontate dagli sviluppatori alle prime armi e non solo.

    Tecnologie che verranno utilizzate nell'articolo: nginx, php-fpm.

    Prima di iniziare la storia, voglio sottolineare che ho fatto tutte queste azioni su un sistema "nudo".
    Lavorerò con il gestore di pacchetti aptitude. Consiglio inoltre di aggiornare l'indice dei pacchetti e i pacchetti stessi prima di installare il software. In questo articolo, faremo questi passaggi insieme.

    Andare!

    Installazione del gestore di pacchetti attitudine, aggiornando l'indice e i pacchetti

    Installare:

    Sudo apt install attitudine
    Aggiorniamo l'indice.

    Aggiornamento attitudinale sudo
    Aggiorniamo i pacchetti (il comando aggiornerà tutti i pacchetti per i quali ci sono nuove versioni, se è necessario rimuovere i pacchetti, sarà fatto).

    Aggiornamento completo dell'attitudine al sudo

    Installazione e configurazione nginx(versione> = 1.10.0)

    Installare.

    Sudo aptitude installa nginx
    Lanciamo.

    Servizio di sudo nginx start
    Controlliamo la versione per assicurarci di non aver installato quella vecchia, cioè al di sotto della 1.10.0.

    Lo abbiamo installato e lanciato, ora andiamo nella directory dove è installato il nostro nginx e osserviamo la sua struttura. La directory nginx si trova lungo questo percorso:

    Cd / ecc / nginx /
    Puoi visualizzare il contenuto della directory con il comando ls, con i flag -la sarà più comodo visualizzare il contenuto della directory (infatti questo comando con flag specifici può essere descritto in modo più dettagliato e accurato, ma abbiamo un argomento diverso oggi).

    Ls -la
    Attualmente siamo interessati alle due directory che vedi nello screenshot. Queste sono le directory dei siti disponibili e abilitate per i siti.

    Andiamo nella directory dei siti disponibili e iniziamo a configurare il nostro host virtuale (sito).

    Cd / etc / nginx / sites-available
    Prima di iniziare a creare un file di configurazione, controlliamo cosa abbiamo in questa directory. Nel mio caso la directory non è vuota, contiene già dei file di configurazione, li ho sovrascritti per non trarre in inganno.

    Digressione importante

    Nel caso di installazione di nginx "da zero", ovvero "da zero", poiché quando si rimuove nginx con il comando
    sudo apt-get remove nginx o sudo apt remove nginx i file di configurazione rimangono e se improvvisamente non capisci perché nginx non funziona e vuoi reinstallarlo (di solito gli utenti Linux alle prime armi ricorrono a questo), dopo la reinstallazione non funzionerà correttamente neanche, per il fatto che nei vecchi file di configurazione (non vengono rimossi dopo la cancellazione con il comando remove) vengono scritte impostazioni errate, dovranno essere rimosse o configurate correttamente, solo allora nginx funzionerà.

    Consiglio di disinstallare con sudo apt-get purge nginx o sudo apt purge nginx. Se si utilizza il gestore di pacchetti aptitude, il comando sudo aptitude purge nginx rimuove l'intero pacchetto, incluse tutte le dipendenze e i file di configurazione.


    Questa directory avrà un file per impostazione predefinita, denominato default. Conterrà un file di configurazione con un esempio, con commenti, puoi studiarlo a tuo piacimento, oppure puoi cancellarlo del tutto (puoi sempre fare riferimento alla documentazione ufficiale).

    Ls -la

    Creiamo il nostro file di configurazione che corrisponderà al nome di dominio del nostro sito locale (o reale, se ne conosci già il nome). Questo è conveniente, in futuro, quando ci saranno molti file di configurazione, ti salverà dalla confusione in essi. Per me questo file si chiamerà project.local.

    Sudo touch project.local
    Vediamo cosa è successo.

    Ora apriamolo nell'editor, lo aprirò in nano.

    Sudo nano project.local
    Vediamo che lo abbiamo vuoto. Passiamo ora alla formazione del nostro file. E' necessario portare la configurazione al form di seguito descritto. Descriverò solo le direttive vitali di questo file, non descriverò il resto, poiché questo non è importante al momento, dopo tutto, abbiamo un argomento per la configurazione di base. Queste impostazioni con una "diapositiva" saranno sufficienti per sviluppare progetti a livello locale, non solo piccoli, ma anche abbastanza grandi. Nei seguenti articoli descriverò separatamente ogni direttiva utilizzata (così vengono chiamate le righe, ad esempio nome_server) di questo file.

    Vedi i commenti direttamente nel file di configurazione.

    Server (ascolta 80; # porta in ascolto su nginx server_name project.local; # nome di dominio relativo all'host virtuale corrente root /home/stavanger/code/project.local; # directory in cui si trova il progetto, percorso all'indice del punto di ingresso index.php;# add_header Access-Control-Allow-Origin *;# serve file statici direttamente location ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ (access_log off; scade max; log_not_found off ;) location / (# add_header Access-Control-Allow-Origin *; try_files $ uri $ uri / /index.php?$query_string;) location ~ * \ .php $ (try_files $ uri = 404; fastcgi_split_path_info ^ ( . + \ .php) (/.+) $; fastcgi_pass unix: /var/run/php/php7.0-fpm.sock; # enable php-fpm socket fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; include fastcgi_script_params ) location ~ /\.ht (nega tutto;))
    Salviamo il file. Ora dobbiamo controllare se ci sono errori in esso. Possiamo farlo come una squadra.

    Sudo nginx -t
    Se vediamo informazioni come nello screenshot, allora tutto è corretto per noi, possiamo continuare a configurare. Se ricevi degli errori, vale la pena controllare di nuovo il file di configurazione.

    Ora dobbiamo attivare il file di configurazione, nella directory /etc/nginx/sites-enabled/, dobbiamo creare un link simbolico (link simbolico). Se hai installato nginx "da zero", in questa directory c'è un collegamento simbolico al file predefinito, che è stato descritto sopra, puoi eliminarlo se non ne hai bisogno. Vai alla directory desiderata.

    Cd / etc / nginx / abilitati ai siti /
    Ora siamo nella directory giusta. Creiamo il nostro collegamento simbolico. Per crearlo utilizziamo il comando ln con il flag -s, poi indicheremo il percorso alla nostra configurazione project.local.

    Sudo ln -s /etc/nginx/sites-available/project.local
    Diamo un'occhiata al nostro collegamento simbolico creato.

    Per assicurarti che stiamo facendo tutto bene, esegui di nuovo il comando.

    File padroni di casa

    Questo file si trova nel percorso /etc/hosts. La presenza di voci in esso consente di eseguire nginx utilizzando localhost come dominio. In questo file, puoi assegnare alias alternativi, ad esempio, per il nostro progetto project.local, assegneremo il dominio project.local.

    Apri il file nell'editor nano.

    Sudo nano / etc / host
    Avrai altre informazioni in questo file, ignoralo. Hai solo bisogno di aggiungere una riga come nel mio screenshot.

    Installazione php-fpm (>=7.0)

    sudo aptitude install php-fpm
    Controlliamo la versione installata, per ogni evenienza, sebbene in Ubuntu 16.04.1 la versione 7.0 sia nei repository.

    Php-fpm7.0 -v

    Ci assicuriamo che tutto sia ok. Iniziamo php-fpm.

    Inizio servizio Sudo php7.0-fpm
    Se modifichi le configurazioni, non dimenticare di riavviare il demone. Lo fa. Ma non abbiamo bisogno di questo.

    Riavvio del servizio Sudo php7.0-fpm
    Questo completa l'installazione e la configurazione di php-fpm. È vero, tutto qui. Questa non è magia, il percorso del socket php-fpm è già stato scritto nel file di configurazione. Certo, potresti aver bisogno di alcune estensioni php per sviluppare i tuoi progetti personali, ma puoi installarle quando ne hai bisogno.

    Ora andiamo alla directory con il nostro progetto, ce l'ho lungo questo percorso.

    Cd /home/stavanger/code/project.local
    Andiamo su nella directory e rendiamo i diritti 777 (ovvero, renderemo i diritti completi alla directory con il nostro project.local). In futuro, questo ci salverà da problemi inutili.

    Cd .. sudo chmod -R 777 project.local
    Questo completa la configurazione del software, creiamo un file di prova nella nostra directory di lavoro project.local e assicuriamoci che tutto funzioni. Creerò un file index.php con contenuti come questo.

    Andiamo nel browser e vediamo che tutto funziona alla grande per noi! Interprete Php compreso.

    Cordiali saluti ai lettori, Stavanger.

    Il server Web Nginx è uno dei server Web più popolari con prestazioni molto elevate e un'elaborazione rapida delle richieste statiche degli utenti. Se configurato correttamente, puoi ottenere prestazioni molto elevate da questo server web. Nginx è molto veloce nel gestire i file statici, siano essi pagine html o altri tipi di risorse.

    In uno degli articoli precedenti, abbiamo già considerato l'impostazione dei suoi parametri principali, nello stesso articolo voglio concentrarmi maggiormente sulle prestazioni e sulla preparazione del server web per l'uso in condizioni di combattimento. Per quanto riguarda la distribuzione Linux, oggi prenderemo in considerazione CentOS, questo sistema è spesso utilizzato sui server e potrebbero esserci delle difficoltà con la configurazione di Nginx. Successivamente, prenderemo in considerazione la configurazione di Nginx CentOS, parleremo di come abilitare il supporto completo per http2, google pagespeed e configurare il file di configurazione principale.

    C'è Nginx nei repository CentOS ufficiali e molto probabilmente è già installato sul tuo sistema. Ma vogliamo che il sito funzioni con il protocollo http2, che consente di trasferire tutti i dati con un'unica connessione, e questo aumenta le prestazioni. Per lavorare su http2, è necessario configurare un certificato SSL, ma questo è già trattato nell'articolo Ottenere un certificato Lets Encrypt Nginx. Ma non è tutto. La maggior parte dei browser ora utilizza ALPN per passare dal normale SSL a HTTP2.0 ed è stato supportato da OpenSSL 1.02. Mentre i repository hanno solo OpenSSL 1.01. Pertanto, abbiamo bisogno di installare la versione di Nginx costruita con OpenSSL 1.02. Puoi usare Broken Repo per questo:

    sudo yum -y install yum-utils
    # sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

    Se usi il repository EPEL, devi indicare che non è necessario prendere Nginx da esso:

    sudo yum-config-manager --save --setopt = epel.exclude = nginx *;

    Ora, per installare la versione corretta di Nginx, basta digitare:

    sudo yum install nginx

    Verrà installata l'ultima versione di Nginx 1.13.2, con pieno supporto ALPN. Successivamente, passiamo alla configurazione.

    2. Configurazione di Nginx

    Il primo passo è considerare la struttura del file di configurazione. A prima vista, tutto qui può sembrare molto confuso, ma lì tutto è abbastanza logico:

    opzioni globali
    eventi ()
    http (
    server (
    Posizione ()
    }
    server ()
    }

    Innanzitutto, ci sono opzioni globali che impostano i parametri principali del programma, ad esempio da quale utente verrà avviato e il numero di processi. Poi c'è una sezione eventi, che descrive come reagirà Nginx alle connessioni in entrata, poi c'è una sezione http, che riunisce tutte le impostazioni relative al funzionamento del protocollo http. Contiene una sezione server, ciascuna di queste sezioni è responsabile di un dominio separato, la sezione server contiene sezioni Posizione, ognuno dei quali è responsabile di uno specifico URL di richiesta, tieni presente che non un file sul server, come in Apache, ma l'URL di richiesta.

    Effettueremo le principali impostazioni globali nel file /etc/nginx/nginx.conf. Successivamente, considereremo cosa esattamente cambieremo e quali valori è desiderabile impostare. Iniziamo con le opzioni globali:

    • utente- l'utente per conto del quale verrà avviato il server deve essere il proprietario della directory con i file del sito, e per suo conto deve essere eseguito php-fpm;
    • processo_lavoratore- il numero di processi Nginx che verranno avviati, è necessario installarne esattamente tanti quanti sono i core, ad esempio io ne ho 4;
    • worker_cpu_affinity- questo parametro permette di assegnare ogni processo a un core del processore separato, impostare il valore su auto in modo che il programma stesso scelga cosa e a cosa allegare;
    • worker_rlimit_nofile- il numero massimo di file che il programma può aprire, per ogni connessione occorrono almeno due file e ogni processo avrà il numero di connessioni da te specificato, quindi la formula è la seguente: processi_lavoratori * connessioni_lavoratori * 2, parametro connessioni_lavoratori analizzeremo un po 'di seguito;
    • pcre_jit- abilitare questa opzione per velocizzare l'elaborazione delle espressioni regolari utilizzando la compilazione JIT;

    Nella sezione eventi, dovresti configurare due parametri:

    • connessioni_lavoratori- il numero di connessioni per un processo deve essere sufficiente per gestire le connessioni in entrata. Innanzitutto, abbiamo bisogno di sapere quante di queste connessioni in entrata ci sono, per questo guardiamo le statistiche all'indirizzo ip_server / nginx_status. Considereremo come abilitarlo di seguito. Nella riga Active Connections vediamo il numero di connessioni attive al server, devi anche tenere in considerazione che vengono conteggiate anche le connessioni a php-fpm. Quindi, presta attenzione ai campi accettati e gestiti, il primo mostra le connessioni elaborate, il secondo - il numero di quelli accettati. I valori devono essere gli stessi. Se differiscono, allora non ci sono abbastanza connessioni. Vedi esempi, la prima istantanea è il problema, la seconda è l'ordine. Per la mia configurazione, la cifra ottimale potrebbe essere 200 connessioni (totale 800, dati 4 processi):

    • multi_accetta- consente al programma di accettare più connessioni contemporaneamente, inoltre velocizza il lavoro, con un numero elevato di connessioni;
    • accept_mutex- impostare il valore di questo parametro su off, in modo che tutti i processi ricevano immediatamente una notifica sulle nuove connessioni;

    Si consiglia inoltre di utilizzare la direttiva use epoll nella sezione degli eventi, poiché questo è il metodo più efficiente per l'elaborazione delle connessioni in entrata per Linux, ma questo metodo viene utilizzato per impostazione predefinita, quindi non vedo alcun motivo per aggiungerlo manualmente. Consideriamo qualche altro parametro dalla sezione http:

    • inviare file- utilizzare il metodo sendfile di invio dei dati. Il metodo più efficiente per Linux.
    • tcp_nodelay, tcp_nopush- invia intestazioni e corpo della richiesta in un unico pacchetto, funziona un po' più velocemente;
    • keepalive_timeout- timeout per mantenere la connessione con il client, se non si dispone di script molto lenti, allora saranno sufficienti 10 secondi, impostare il valore per il tempo necessario affinché l'utente possa essere connesso al server;
    • reset_timedout_connection- disconnettersi dopo il timeout.
    • open_file_cache- informazioni sulla cache sui file aperti. Ad esempio, open_file_cache max = 200000 inactive = 120s; max - il numero massimo di file nella cache, tempo di memorizzazione nella cache.
    • open_file_cache_valid- quando è necessario verificare la pertinenza dei file. Ad esempio: open_file_cache_valid 120s;
    • open_file_cache_min_uses- memorizzare nella cache solo i file che sono stati aperti il ​​numero di volte specificato;
    • open_file_cache_errors- ricorda gli errori di apertura dei file.
    • if_modified_since- imposta come verranno elaborate le intestazioni if-modified-since. Utilizzando questa intestazione, il browser può ricevere una risposta 304 se la pagina non è cambiata dall'ultima volta che è stata visualizzata. Opzioni possibili - non inviare - off, invia se l'ora corrisponde esattamente - esatto, invia se l'ora corrisponde esattamente o più - prima;

    Ecco come apparirà l'impostazione di nginx conf:

    utente nginx;
    processo_lavoratore 4;
    worker_cpu_affinity automatico;
    worker_rlimit_nofile 10000;
    pcre_jit attivo;

    error_log /var/log/nginx/error.log warn;
    load_module "moduli / ngx_pagespeed.so";

    eventi (
    multi_accetta su;
    accept_mutex disattivato;
    connessioni_lavoratrici 1024;
    }

    inviare file su;
    tcp_nopush attivato;
    tcp_nodelay attivato;

    open_file_cache max = 200000 inattivo = 20s;
    open_file_cache_valid 120s;
    open_file_cache_errors attivo;

    reset_timedout_connection attivato;
    client_body_timeout 10;
    keepalive_timeout 65;

    include /etc/nginx/sites-enabled.*.conf

    3. Configurazione di http2

    Non descriverò in dettaglio l'impostazione della sezione server, perché l'ho già fatto nell'articolo Installazione di Nginx in Ubuntu e non ho nulla da aggiungere qui, l'impostazione di SSL è un argomento piuttosto ampio e verrà discusso anche in un articolo a parte . Ma per configurare http2 devi già avere SSL. Successivamente, modifica semplicemente la direttiva di ascolto nella sezione del tuo server:

    ascolta 194.67.215.125:443 default_server;

    ascolta 194.67.215.125:443 http2 default_server;

    In un modo così semplice, puoi abilitare http2 se la versione corretta di Nginx è stata installata prima.

    4. Impostazione di PageSpeed

    Google Pagespeed è un modulo Nginx che esegue varie ottimizzazioni per velocizzare il caricamento delle pagine, il server Web funziona in modo più efficiente e gli utenti si sentono meno a loro agio. Ciò include la memorizzazione nella cache, l'ottimizzazione del codice html, l'ottimizzazione delle immagini, la combinazione di codice javascript e css e molto altro. Tutto questo viene fatto a livello di Nginx, quindi è più efficiente che se lo stessi facendo in php. Ma c'è uno svantaggio, il modulo rimuove l'intestazione Last Modified.

    Il fatto è che PageSpeed ​​​​imposta una linea di cache molto lunga per tutti i file e aggiunge il suo hash al nome del file. Quindi la velocità di caricamento delle risorse è molto più elevata, poiché il browser richiederà solo i file con un nuovo hash e LastModified viene eliminato in modo che gli utenti possano vedere le modifiche se un file viene modificato. Vediamo ora come installare il modulo. Dovremo costruirlo dalla fonte.

    Innanzitutto, installa gli strumenti di compilazione, è molto importante, se non li installi, ricevi un errore e non saprai cosa fare:

    yum install wget gcc cmake unzip gcc-c ++ pcre-devel zlib-devel

    Scarica e decomprimi i sorgenti di Nginx per la tua versione, ad esempio 1.13.3:

    wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
    # tar -xzvf nginx-1.13.3.tar.gz

    La configurazione del server nginx non include la ricostruzione e la sostituzione del programma dal repository, utilizziamo solo queste fonti per creare il modulo. Scarica e decomprimi i sorgenti di PageSpeed:

    wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
    # unzip v1.12.34.2-stable.zip

    Scarica e decomprimi la libreria di ottimizzazione di PageSpeed ​​nella cartella di origine del modulo:

    cd ngx_pagespeed-1.12.34.2-stabile /
    # wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
    # tar -xvzf 1.12.34.2-x64.tar.gz

    Scarica e decomprimi i sorgenti di OpenSSL 1.02:

    wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
    # tar xvpzf openssl-1.0.2k.tar.gz

    Ora dobbiamo costruire il modulo. Innanzitutto, diamo un'occhiata alle opzioni con cui è costruito l'attuale Nginx:

    E ora andiamo nella cartella con Nginx, sostituiamo tutte le opzioni ricevute, l'opzione --add-dynamic-module per PageSpeed, OpenSSL e proviamo a costruire:

    cd nginx-1.13.3
    # ./configure --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib64 / nginx / module --conf-path = / etc / nginx / nginx .conf --error-log-path = /var/log/nginx/error.log --http-log-path = /var/log/nginx/access.log --pid-path = /var/run/nginx .pid --lock-path = /var/run/nginx.lock --http-client-body-temp-path = /var/cache/nginx/client_temp --http-proxy-temp-path = /var/cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --con-modulo_http_flv --con-modulo_http_gunzip --con-modulo_statico_http_gzip --con-modulo_http_mp4 --con-modulo_indice_casuale-http --con-modulo_http_realip --con-modulo_collegamento_http_secure --con modulo_statico --modulo_http --con-http_wit h-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = "- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fExceptions -fstack-protector-strong --param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 -mtune = generic "--with-ld-opt = --with -openssl = $ HOME / openssl-1.0.2k --add-dynamic-module = $ HOME / ngx_pagespeed-1.12.34.2-stable $ (PS_NGX_EXTRA_FLAGS)
    # fare

    Se tutto è stato fatto correttamente, all'output riceverai il modulo ngx_pagespeed.so nella cartella obj, devi copiarlo nella cartella /etc/nginx/modules:

    cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

    Crea una cartella per la cache:

    mkdir -p / var / ngx_pagespeed_cache
    # chown -R nginx: nginx / var / ngx_pagespeed_cache

    Ora aggiungi una riga come questa per abilitare il modulo in /etc/nginx/nginx.conf:

    load_module "moduli / ngx_pagespeed.so";

    Nginx è uno dei server web più popolari al mondo ed è utilizzato per ospitare i siti più grandi e trafficati su Internet. Nginx è nella stragrande maggioranza dei casi meno esigente in termini di risorse rispetto ad Apache; può essere utilizzato sia come web server che come reverse proxy.

    In questo tutorial, ti guideremo attraverso il processo di installazione di Nginx sul tuo server Ubuntu 16.04.

    Prima dell'installazione

    Prima di iniziare a seguire i passaggi in questo articolo, assicurati di avere un normale utente non root con privilegi sudo. Puoi scoprire come configurare tale utente sul tuo server da.

    Dopo aver creato tale utente, accedi al server utilizzando il suo nome utente e password. Ora sei pronto per seguire i passaggi in questo articolo.

    Passaggio 1: installazione del server Web Nginx

    Nginx è disponibile nei repository Ubuntu standard, quindi l'installazione è abbastanza semplice.

    Poiché utilizzeremo apt per la prima volta durante questa sessione, inizieremo aggiornando l'elenco dei pacchetti locale. Successivamente, installiamo il server:

    • sudo apt-get update
    • sudo apt-get install nginx

    Come risultato dell'esecuzione di questi comandi, apt-get installerà Nginx e altri pacchetti necessari per il suo funzionamento sul tuo server.

    Passaggio 2: configurazione del firewall

    Prima di poter iniziare a verificare se Nginx funziona, dobbiamo configurare il nostro firewall per consentire l'accesso al servizio. Durante l'installazione, Nginx si registra con il servizio firewall ufw. Pertanto, impostare l'accesso è abbastanza semplice.

    Per visualizzare le impostazioni di accesso per le applicazioni registrate in ufw, immettere il comando:

    • sudo ufw elenco di app

    Come risultato dell'esecuzione di questo comando, verrà visualizzato un elenco di profili dell'applicazione:

    Applicazioni disponibili: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

    Come puoi vedere da questo output, ci sono tre profili configurati per Nginx:

    • Nginx pieno: questo profilo apre le porte 80 (traffico Web normale non crittografato) e 443 (traffico crittografato tramite TLS / SSL).
    • Nginx HTTP: questo profilo apre solo la porta 80 (traffico Web normale, non crittografato).
    • Nginx HTTPS Nota: questo profilo apre solo la porta 443 (il traffico è crittografato tramite TLS/SSL).

    Si consiglia di configurare ufw per consentire solo il traffico che si desidera esplicitamente consentire. Poiché non abbiamo ancora configurato SSL per il nostro server, in questo articolo consentiremo solo il traffico sulla porta 80.

    Questo può essere fatto con il seguente comando:

    • sudo ufw allow "Nginx HTTP"

    Puoi controllare le modifiche inserendo il comando:

    • sudo ufw status

    Di conseguenza, dovrebbe essere visualizzato il seguente output:

    Stato: attivo All'azione da - ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

    Passaggio 3: verificare che il server web funzioni

    Una volta completato il processo di installazione, Ubuntu 16.04 avvierà automaticamente Nginx. Pertanto, il server Web dovrebbe essere già in esecuzione.

    Possiamo verificarlo eseguendo il seguente comando:

    • stato systemctl nginx
    ● nginx.service - Un server web ad alte prestazioni e un server proxy inverso Caricato: caricato (/lib/systemd/system/nginx.service; abilitato; impostazione del fornitore: abilitato) Attivo: attivo (in esecuzione) da lun 2016-04-18 16:14:00 EDT; 4min 2s fa PID principale: 12857 (nginx) CGroup: /system.slice/nginx.service ├─12857 nginx: processo master / usr / sbin / nginx -g daemon on; master_process su └─12858 nginx: processo lavoratore

    Come puoi vedere dall'output sopra, il servizio è attivo e funzionante. Tuttavia, ci assicureremo che sia completamente funzionante richiedendo una pagina web.

    Per fare ciò, possiamo verificare se viene visualizzata la pagina Web Nginx, disponibile per impostazione predefinita quando si immette il nome di dominio o l'indirizzo IP del server.

    Se non desideri configurare un nome di dominio per il tuo server, puoi utilizzare l'indirizzo IP pubblico del tuo server. Se non conosci l'indirizzo IP pubblico del server, puoi trovare questo indirizzo IP con il seguente comando:

    • indirizzo ip mostra eth0 | grep inet | awk "(stampa $ 2;)" | sed "s /\/.*$//"

    Di conseguenza, verranno visualizzati diversi indirizzi IP. Prova ad incollarli nel tuo browser.

    Un altro modo per determinare il tuo indirizzo IP è verificare come il tuo server è visibile da Internet:

    • sudo apt-get install curl
    • curl -4 icanhazip.com

    Digita l'indirizzo IP o il nome di dominio ottenuto nel tuo browser web. Dovresti vedere la pagina Nginx predefinita.

    Http: // nome_dominio_o_indirizzo_IP

    Se vedi una pagina simile nel tuo browser, hai installato con successo Nginx.

    Passaggio 4: gestione del processo Nginx

    Ora che Nginx è installato e abbiamo verificato che funziona, diamo un'occhiata ad alcuni comandi di base per la gestione del nostro server web.

    Per fermare il server web usa il comando:

    • sudo systemctl stop nginx

    Per avviare un server Web arrestato, digitare:

    • sudo systemctl start nginx

    È possibile utilizzare il seguente comando per riavviare il server Web:

    • sudo systemctl riavvia nginx

    Se apporti modifiche alla configurazione di Nginx, puoi spesso riavviarlo senza chiudere le connessioni. Per fare ciò, puoi utilizzare il seguente comando:

    • sudo systemctl ricarica nginx

    Per impostazione predefinita, Nginx è configurato per avviarsi automaticamente all'avvio del server. Se non hai bisogno di questo comportamento del server web, puoi disabilitarlo con il seguente comando:

    • sudo systemctl disabilita nginx

    Per riabilitare Nginx per l'avvio all'avvio del server, inserisci:

    • sudo systemctl abilita nginx

    Passaggio 5: file e directory Nginx essenziali

    Ora che conosciamo i comandi di base per la gestione del server web, diamo un'occhiata alle directory e ai file principali.

    Contenuto

    • /var/www/html: il contenuto web, che per impostazione predefinita consiste solo nella pagina di test Nginx che abbiamo visto in precedenza, si trova nella directory /var/www/html. Il percorso di questa directory può essere configurato nei file di configurazione di Nginx.

    Configurazione del server

    • /etc/nginx: directory di configurazione di Nginx. Tutti i file di configurazione di Nginx si trovano in questa directory.
    • /etc/nginx/nginx.conf: file di configurazione principale di Nginx. Questo file viene utilizzato per apportare modifiche alla configurazione globale di Nginx.
    • /etc/nginx/sites-available: la directory in cui sono archiviati i "blocchi server" per ogni sito (i blocchi server sono all'incirca equivalenti agli host virtuali in Apache). Nginx non utilizzerà i file di configurazione in questa directory se non hanno collegamenti corrispondenti nella directory abilitata ai siti (vedi sotto). Di solito, tutte le impostazioni del blocco del server vengono eseguite in questa directory, quindi il sito viene attivato creando un collegamento in un'altra directory.
    • /etc/nginx/sites-enabled/: questa directory memorizza i blocchi del server per i siti attivati. Ciò si ottiene in genere collegandosi ai profili di configurazione del sito che si trovano nella directory dei siti disponibili.
    • /etc/nginx/snippets: questa directory memorizza i frammenti di configurazione che possono essere utilizzati durante la configurazione di qualsiasi sito. I frammenti di configurazione che possono essere potenzialmente utilizzati su più file di configurazione sono ottimi candidati per la creazione di questi frammenti.

    Registri del server

    • /var/log/nginx/access.log: ogni richiesta al tuo server web viene scritta in questo file di registro, se non diversamente specificato dalle impostazioni di Nginx.
    • /var/log/nginx/error.log: tutti gli errori di Nginx verranno registrati in questo file.

    Conclusione

    Ora che hai un server web installato e configurato, puoi scegliere quali contenuti offrire agli utenti e quali altre tecnologie puoi utilizzare oltre al server web.

    Principali articoli correlati