Come installare un certificato SSL / TLS per WordPress con Apache utilizzando un proxy inverso Nginx su un VPS CentOS

introduzione

Nginx e Apache sono i server Web open source più popolari utilizzati anche da siti Web che generano traffico intenso. In questa esercitazione viene illustrato come utilizzare entrambi i server Web ma con funzionalità diverse. Il web server Apache esegue il sito Web WordPress dietro il server nginx (con certificato SSL installato) che funge da proxy inverso per il server apache. In questo caso, Nginx viene applicato come proxy inverso che gestisce tutte le connessioni SSL per conto di Apache, mentre Apache rimane ancora il server Web. Questo è uno dei molti usi di Nginx come proxy inverso.


Pertanto, tutte le connessioni URL dai browser degli utenti raggiungono prima il server proxy inverso Nginx e sono costrette a trovarsi nel protocollo HTTPS utilizzando il certificato SSL installato dal server. Quindi Nginx inoltra tutte le richieste al server Web Apache che esegue il sito WordPress. Di conseguenza, è molto importante configurare entrambi i server per l’ascolto su porte diverse per evitare conflitti.

>In questo tutorial, illustriamo come installare il certificato SSL nel proxy inverso Nginx per il sito Web WordPress ospitato sul server Web Apache.

Pre-requisiti

Si presume che WordPress e Apache siano stati installati, configurati e funzionino correttamente su un server Linux CentOS 7.

Installare & Configura Nginx

Esegui i comandi per installare il server nginx

$ sudo yum installa epel-release
$ sudo yum installa nginx

Modifica il file di configurazione di apache

$ sudo vim /etc/httpd/conf/httpd.conf

Cambia la porta di ascolto in un’altra porta (ad es. 8080) modificando la linea come segue.

Ascolta 8080

Questo per impedire a nginx di ascoltare la stessa porta di Apache, quindi ora nginx ascolta la porta 80 mentre apache ascolta la porta 8080.

Apri la porta 8080 nel firewall:

$ sudo firewall-cmd –permanent –add-port = 8080 / tcp
$ sudo firewall-cmd –reload

Riavvia il servizio apache

$ sudo systemctl restart httpd

Inizio & abilita nginx

$ sudo systemctl start nginx
$ sudo systemctl abilita nginx

Conferma che nginx sta funzionando bene usando curl per mostrare il suo nome e la versione nelle intestazioni HTTP

$ curl -I http: // localhost

Configura Nginx per SSL

Rimuovi dal commento l’intera sezione sotto la parte del server https (ssl) cioè.

# Impostazioni per un server abilitato TLS

Genera certificato SSL

Prima di tutto, crea la nginx e le directory private come segue

$ sudo mkdir -p / etc / pki / nginx / private

Quindi generare le chiavi:

$ sudo openssl req -x509 -nodes -sha256 -days 365 -newkey rsa: 2048 -keyout /etc/pki/nginx/private/server.key -out /etc/pki/nginx/server.crt

Nota speciale: assicurarsi che la porta 443 sia consentita tramite il firewall come segue:

$ sudo firewall-cmd –permanent –add-port = 443 / tcp
$ sudo firewall-cmd –reload

Modifica il dile Rhe nginx.conf per consentire l’inoltro di un proxy inverso ad Apache

Nella parte server (http) – la prima sezione: sostituire la sezione della posizione con la seguente.

Posizione / {
try_files $ uri @apache;
}

location @apache {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ [^?] * / $ {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ \ .php $ {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ / \. {
negare tutto;
access_log off;
log_not_found off;
}

Nella parte server (https) – la seconda sezione: sostituire la sezione della posizione con la seguente.

Posizione / {
try_files $ uri @apache;
}

location @apache {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ [^?] * / $ {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ \ .php $ {
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-Per $ remote_addr;
proxy_set_header Schema X-Forwarded-Proto $;
proxy_set_header Host $ host;
proxy_pass http://127.0.0.1:8080;
}

posizione ~ / \. {
negare tutto;
access_log off;
log_not_found off;
}

Vai al sito Web Wiki di Mozilla per le suite di crittografia consigliate> e incolla i ciphersuites nella sezione cipher nella seconda sezione server (https).

ssl_ciphers ‘ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-EC25-A8 RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256 ‘;

Quindi salva il file:

Configura WordPress

Modifica il file wp-config per consentire il reindirizzamento su https aggiungendo il codice seguente:

define (‘FORCE_SSL_ADMIN’, true);
if (strpos ($ _ SERVER [‘HTTP_X_FORWARDED_PROTO’], ‘https’)! == false)
$ _SERVER [ ‘HTTPS’] = ‘on’;
$ sudo vim /var/www/html/wp-config.php

Salva il file

Concedere le autorizzazioni per le connessioni httpd e nginx tramite SELinux

$ sudo setsebool -P httpd_can_network_connect 1

Vai alla dashboard wp-admin del sito

impostazioni > Generale, quindi cambia il "http" per "https" sia per il "Indirizzo WordPress (URL)" e "Indirizzo del sito (URL)"

E salva le modifiche

Forza reindirizzamento di tutto il traffico su https

Modifica nginx.conf aggiungendo la riga nella sezione server http

return 301 https: // $ nome_server $ request_uri;

Riavvia i servizi nginx e apache

$ sudo systemctl restart nginx httpd

Ora abbiamo un sito WordPress con certificato SSL autofirmato come mostrato di seguito:

https://35.225.251.235

Conclusione

Ora hai un sito Web WordPress perfettamente funzionante con certificato SSL. Il server nginx, sebbene funzioni come proxy inverso, funziona in modo trasparente e senza soluzione di continuità con il web server Apache. Questo fa sembrare che le richieste vengano inviate direttamente al server web Apache. In effetti, è uno dei modi più efficaci per proteggere il tuo sito Web e ridurre la vulnerabilità contro gli hacker.

In caso di problemi, chiedi assistenza al servizio di supporto del tuo host web: dovrebbero essere in grado di aiutarti. In caso contrario, HostaAdvice può consigliare i migliori provider di hosting VPS, i migliori provider di hosting WordPress e i migliori servizi di hosting Linux (a seconda di ciò che stai cercando). Le scelte migliori in ogni categoria sono note per fornire un eccellente servizio clienti e supporto.

Dai un’occhiata a questi 3 principali servizi di hosting WordPress:

FastComet

Prezzo di partenza:
$ 2.95


Affidabilità
9.7


Prezzi
9.5


Di facile utilizzo
9.7


Supporto
9.7


Caratteristiche
9.6

Leggi le recensioni

Visita FastComet

Hostinger

Prezzo di partenza:
$ 0.99


Affidabilità
9.3


Prezzi
9.3


Di facile utilizzo
9.4


Supporto
9.4


Caratteristiche
9.2

Leggi le recensioni

Visita Hostinger

Hosting A2

Prezzo di partenza:
$ 3.92


Affidabilità
9.3


Prezzi
9.0


Di facile utilizzo
9.3


Supporto
9.3


Caratteristiche
9.3

Leggi le recensioni

Visita A2 Hosting

Articoli How-To correlati

  • Come configurare Nginx come proxy inverso per Apache su un Ubuntu 16.04 VPS o server dedicato
    esperto
  • Come installare Crittografiamo con Nginx su Ubuntu 18.04 VPS o server dedicato
    intermedio
  • Come aggiungere SSL gratuito in WordPress usando Let’s Encrypt
    intermedio
  • Come installare WordPress con Nginx & Redis
    novizio
  • Come installare WordPress con Nginx & Ripeti su un VPS CentOS o server dedicato
    intermedio
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me