Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Utilizzare Oracle Cloud Infrastructure per pubblicare un server Web accessibile da Internet con IPv6
Introduzione
In questo tutorial, spiegheremo come creare un server Web (istanza OCI) all'interno di Oracle Cloud Infrastructure (OCI) e renderemo questo server Web accessibile da Internet. Non solo renderemo questo server web accessibile da un indirizzo IPv4 pubblico, ma lo renderemo accessibile anche dall'indirizzo IPv6 pubblico con i record DNS (FQDN) completamente configurati.
Nota: i domini utilizzati in questa esercitazione sono stati creati e configurati solo a scopo di test.
Obiettivi
-
Creare un sito Web utilizzando un'istanza OCI raggiungibile tramite IPv6. Abbiamo anche spiegato come creare e configurare tutti gli altri prerequisiti per rendere finalmente disponibile il sito web. Come bonus, abbiamo anche spiegato come è installato il webserver NGINX e come è integrato PHP. Infine, forniremo un sito Web o uno script PHP personalizzato che può essere utilizzato per verificare la connettività IPv4 o IPv6 al tuo server Web e se ti connetti con HTTP o HTTPS.
- Task 1: creare una nuova VCN con IPv6 abilitato.
- Task 2: creare una nuova subnet con IPv6 abilitato.
- Task 3: creare una nuova istanza con IPv6 abilitato.
- Task 4: Creare un nuovo gateway Internet e configurare l'instradamento.
- Task 5: Aprire HTTP e HTTPS nella lista di sicurezza predefinita.
- Task 6: Installare un server Web su questa istanza.
- Task 7: Configurare i record DNS.
- Task 8: Creare un sito web personalizzato con NGINX e PHP.
- Task 9: Testare il server web da Internet.
Task 1: creare una nuova VCN con IPv6 abilitato
-
Aprire il menu hamburger e fare clic su Rete di cloud virtuale.
- Assicurarsi di selezionare Reti cloud virtuali nel menu.
- Selezionare il compartimento in cui lavorare. Se il compartimento non è stato impostato, utilizzare il compartimento radice.
- Fare clic su Crea VCN.
-
In Crea reti cloud virtuali, immettere le informazioni riportate di seguito.
- Immettere un nome della VCN.
- Selezionare di nuovo il compartimento, se non è già precompilato.
- Selezionare il CIDRIPv4 CIDR IPv4 che si desidera utilizzare all'interno di questa VCN. Per questo tutorial, abbiamo usato un CIDR /16 perché le subnet IPv4 (in genere, /24) saranno scolpite da questo orologio CIDR.
- Scorri in basso.
- Per IPv6 verrà assegnato un prefisso allocato da Oracle. Selezionare Assegna un prefisso /56 allocato da Oracle.
- Fare clic su Crea VCN.
Ora abbiamo creato una nuova VCN con nuovi spazi di rete IPv4 e IPv6 che possiamo utilizzare per scolpire le subnet IPv4 e IPv6.
Task 2: creare una nuova subnet con IPv6 abilitato
-
Fare clic su Crea subnet.
-
In Subnet, immettere le informazioni riportate di seguito.
- Immettere il nome della subnet.
- Selezionare il compartimento in cui deve trovarsi questa subnet, se non è già precompilato.
- Per il tipo di subnet, al momento selezioneremo Regionale.
- Immettere la subnet IPv4 che verrà scolpita dal blocco CIDR assegnato nella VCN. Assicurarsi che il nuovo blocco CIDR /24 rientri nel /16 determinato nella VCN.
- Scorri in basso.
- Per IPv6 verrà assegnato un prefisso allocato da Oracle. Selezionare Assegna un prefisso /64 allocato da Oracle.
- Selezionare un nuovo decimale HEX per completare il prefisso allocato da Oracle.
- Selezionare la tabella di instradamento predefinita per la VCN.
- Rendi pubblica la subnet, in modo da ottenere gli indirizzi IP pubblici di cui abbiamo bisogno per rendere il server Web accessibile da Internet.
- Scorri in basso.
- Selezionare il DHCP predefinito per la VCN.
- Selezionare la lista di sicurezza predefinita per la VCN.
- Fare clic su Crea subnet.
-
Si noti che lo stato della nuova subnet creata è Provisioning.
Dopo alcuni minuti, lo stato della nuova subnet sarà Disponibile.
Ora la subnet è pronta per l'uso per gli indirizzi IPv4 e IPv6.
Task 3: creare una nuova istanza con IPv6 abilitato
-
Aprire OCI Console.
- Fare clic sul menu hamburger nell'angolo in alto a sinistra.
- Fare clic su Istanze nella sezione collegata.
-
Fare clic su Crea istanza.
-
In Crea istanza di computazione, immettere le informazioni riportate di seguito.
- Immettere il nome dell'istanza.
- Selezionare il compartimento in cui deve trovarsi l'istanza.
- Selezionare il dominio di disponibilità in cui si desidera posizionare questa istanza. Per questo tutorial, come la regione nord-occidentale dei Paesi Bassi, abbiamo solo un dominio di disponibilità.
- Scorri in basso.
Mantieni tutto predefinito e scorri verso il basso.
- In Rete primaria, selezionare Seleziona rete cloud virtuale esistente.
- Selezionata la VCN creata nel task 1.
- Per la subnet, selezionare Selezionare la subnet esistente.
- Selezionare la subnet creata nel task 2.
- Scorri in basso.
- Indirizzo IPv4 privato: selezionare Assegna automaticamente indirizzo IPv4 privato.
- Indirizzo IPv6: selezionare Assegna indirizzi IPv6 dal prefisso della subnet configurato durante la creazione della subnet nel task 2.
- IPv6: selezionare Assegna automaticamente l'indirizzo IPv6 privato dal prefisso.
- Scorri in basso.
- Per accedere e gestire questa istanza di Linux, è necessario utilizzare le chiavi SSH. Per questa esercitazione, lasceremo che OCI generi una nuova coppia di chiavi SSH.
- Scarica le chiavi private e pubbliche sul computer locale in modo da poterle utilizzare per accedere e gestire questa istanza Linux dopo la creazione.
-
Fare clic su Crea per creare l'istanza.
- Durante la creazione, lo stato dell'istanza sarà PROVISIONING.
- Si noti che non sono ancora disponibili dettagli sull'indirizzo IP.
- Quando l'istanza è stata completamente creata e pronta, lo stato verrà impostato su RUNNING.
- Si noti che i dettagli dell'indirizzo IP sono ora disponibili.
Il prossimo task logico sarà quello di accedere all'istanza utilizzando SSH in modo da poter avviare l'installazione e la configurazione del server Web. Quando si tenta di connettersi al server Web utilizzando l'indirizzo IPv4 pubblico e la chiave privata, non è possibile connettersi poiché la VCN creata nel task 1 non dispone di un gateway Internet e ora è necessario creare tale gateway Internet prima nella VCN e anche configurare l'instradamento.
Task 4: Creare un nuovo gateway Internet e configurare il routing
Per abilitare l'accesso a una nuova istanza (server Web) da Internet, inizialmente utilizzando SSH e alla fine passando a HTTP, dobbiamo stabilire un gateway Internet.
-
Aprire OCI Console.
- Vai a Reti cloud virtuali.
- Selezionare la VCN creata nel task 1.
-
Nella pagina Dettagli VCN fare clic su Gateway Internet.
-
Fare clic su Crea gateway Internet.
-
In Crea gateway Internet immettere le informazioni riportate di seguito.
- Immettere il nome.
- Selezionare il compartimento.
- Fare clic su Crea gateway Internet.
-
Aggiungere una regola di instradamento.
- Si noti che il gateway Internet è disponibile.
- Fare clic su Tabelle di instradamento.
- Si noti che la tabella di instradamento predefinita contiene un valore
0
nel numero di regole. - Fare clic su Tabella di instradamento predefinita.
- Versione protocollo: selezionare IPv4.
- Tipo di destinazione: selezionare Gateway Internet.
- Blocco CIDR di destinazione: per questa esercitazione, selezionare
0.0.0.0/0
perché si desidera che tutto il traffico di rete IPv4 predefinito passi al gateway Internet. - Selezionare il gateway Internet di destinazione creato in precedenza in questo task.
- Fare clic su Aggiungi regole di instradamento.
- Si noti che la nuova regola di instradamento predefinita IPv4 è stata creata.
- Per instradare il traffico Internet IPv6, è inoltre necessario creare una nuova regola Internet predefinita IPv6. Fare di nuovo clic su Aggiungi regole di instradamento.
- Versione protocollo: selezionare IPv6.
- Tipo di destinazione: selezionare Gateway Internet.
- Blocco CIDR di destinazione: per questa esercitazione, selezionare
:/0
perché si desidera che tutto il traffico di rete IPv6 predefinito passi al gateway Internet. - Selezionare il gateway Internet di destinazione creato in precedenza in questo task.
- Fare clic su Aggiungi regole di instradamento.
-
Si noti che la nuova regola di instradamento predefinita IPv6 è stata creata.
- Ci connettiamo all'istanza appena creata tramite SSH utilizzando la chiave privata.
- Una volta stabilita la connessione, eseguire il comando
ip a
per verificare gli indirizzi IP. - Si noti che l'indirizzo IPv4 privato è lo stesso fornito per i dettagli dell'istanza.
- Testiamo anche la connessione utilizzando il terminale CLI macOS, eseguiamo il comando
ssh -i ssh-key-2024-02-05.key opc@xxx.xxx.xxx.48
. - Una volta stabilita la connessione, eseguire il comando
ip a
per verificare gli indirizzi IP. - Si noti che l'indirizzo IPv4 privato è lo stesso fornito per i dettagli dell'istanza in OCI Console.
Tenere presente che l'istanza non dispone dell'indirizzo IPv6 fornito per i dettagli dell'istanza in OCI Console.
-
Questo problema può essere risolto eseguendo un riavvio dell'istanza.
- Andare all'istanza.
- Fare clic su Reboot.
- Connettersi di nuovo all'istanza tramite SSH utilizzando la chiave privata.
- Una volta stabilita la connessione, eseguire il comando
ip a
per verificare gli indirizzi IP. - Si noti che l'indirizzo IPv4 privato è lo stesso fornito nei dettagli dell'istanza.
- Si noti che l'indirizzo IPv6 privato è lo stesso fornito nei dettagli dell'istanza.
- Per testare la connettività verso internet facciamo anche un ping all'indirizzo IP IPv6 di uno dei server DNS di Google.
- Eseguire un test rapido per verificare se è possibile connettersi a un'istanza utilizzando un indirizzo IPv6. Eseguire il comando
ssh -i ssh-key-2024-02-05.key opc@2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
per eseguire il test. - Una volta stabilita la connessione, eseguire il comando
ip a
per verificare gli indirizzi IP. - Si noti che l'indirizzo IPv4 privato è lo stesso fornito nei dettagli dell'istanza.
- Si noti che l'indirizzo IPv6 privato è lo stesso fornito nei dettagli dell'istanza.
Task 5: Aprire HTTP e HTTPS nell'elenco di sicurezza predefinito
Quando viene creata una nuova VCN, alle subnet all'interno della VCN viene applicato un elenco di sicurezza predefinito. Per impostazione predefinita, ICMP e SSH sono consentiti in entrata (ingress). È necessario aggiungere HTTP e HTTPS a tale elenco per consentire il traffico in entrata per il server Web.
-
Fare clic sul menu hamburger e selezionare Reti cloud virtuali.
-
Fare clic sulla VCN creata nel task 1.
-
Scorri in basso.
-
Fare clic su Elenchi di sicurezza.
-
Fare clic su Lista di sicurezza predefinita.
-
Fare clic su Aggiungi regole di entrata.
-
Aggiungere nuove regole di sicurezza per il traffico di rete IPv4.
- Tipo di origine: selezionare CIDR.
- CIDR di origine: immettere
0.0.0.0/0
. - Protocollo IP: selezionare TCP.
- Intervallo porte di origine: mantenere l'impostazione predefinita (Tutto).
- Intervallo porte di destinazione: selezionare
80,443
(HTTP e HTTPS). - Immettere la descrizione.
- Fare clic su Aggiungi regole di entrata.
-
Rivedere le regole di sicurezza IPv4 per consentire l'ingresso del traffico HTTP e HTTPS.
-
Per aggiungere nuove regole di sicurezza per il traffico di rete IPv6, creare nuove regole di entrata. Fare di nuovo clic su Aggiungi regole di entrata.
- Tipo di origine: selezionare CIDR.
- CIDR di origine: immettere
::/0
. - Protocollo IP: selezionare TCP.
- Intervallo porte di origine: mantenere l'impostazione predefinita (Tutto).
- Intervallo porte di destinazione: selezionare
80,443
(HTTP e HTTPS). - Immettere la descrizione.
- Fare clic su Aggiungi regole di entrata.
-
Rivedere le regole di sicurezza IPv6 per consentire l'ingresso del traffico HTTP e HTTPS.
Le regole di sicurezza sono in vigore e il traffico IPv4 e IPv6 è consentito nelle subnet VCN. L'applicazione server Web verrà installata nell'istanza.
Task 6: Installare un server Web nell'istanza
Prima di installare l'applicazione server Web, verificare rapidamente se le porte firewall sono configurate correttamente. Utilizzare il seguente sito Web: IPV6 Online Port Scanner. Questo sito Web dispone di uno scanner di porta IPv6, ma è anche possibile immettere gli indirizzi IPv4.
-
Immettere l'indirizzo IPv4 con i dettagli per eseguire la scansione sulla porta TCP
80
. Si noti che questo stato è CLOSED poiché l'applicazione server Web non è ancora installata e lo stato non è FILTERED poiché le regole sono state aggiunte alla lista di sicurezza predefinita. -
Per l'indirizzo IPv6, immettere i dettagli riportati di seguito. L'output è uguale a IPv4 per gli stessi motivi.
-
Sulla console del terminale dell'istanza del server Web o su SSH. Immettere i comandi seguenti per aggiornare il gestore di pacchetti software DNF e installare i comandi DNF.
[opc@ih-webserver-01 ~]$ sudo dnf update -y [opc@ih-webserver-01 ~]$ sudo dnf install dnf-utils -y
-
Aggiornare il file
nginx.repo
per specificare i dettagli da scaricare e installare l'applicazione server Web NGINX.[opc@ih-webserver-01 ~]$ sudo nano /etc/yum.repos.d/nginx.repo
Copiare e incollare il contenuto seguente nel file
nginx.repo
.[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Verificare il contenuto del file
nginx.repo
.[opc@ih-webserver-01 ~]$ sudo more /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [opc@ih-webserver-01 ~]$
-
Per impostazione predefinita, viene utilizzato il repository per i pacchetti Nginx stabili. Per utilizzare i pacchetti Nginx della riga principale, eseguire il comando seguente.
[opc@ih-webserver-01 ~]$ sudo yum-config-manager --enable nginx-mainline
-
Usare il comando seguente per installare l'applicazione server Web NGINX.
[opc@ih-webserver-01 ~]$ sudo dnf install nginx
-
Per avviare l'applicazione server Web NGINX, eseguire il comando seguente.
[opc@ih-webserver-01 ~]$ sudo systemctl start nginx
-
Al termine dell'installazione, abilitare NGINX all'avvio automatico del sistema e all'avvio del server Web.
[opc@ih-webserver-01 ~]$ sudo systemctl enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
-
Utilizzare il seguente comando per verificare lo stato di esecuzione dell'applicazione server Web NGINX.
[opc@ih-webserver-01 ~]$ systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2024-02-06 08:58:43 GMT; 2min 47s ago Docs: http://nginx.org/en/docs/ Main PID: 43323 (nginx) Tasks: 3 (limit: 99901) Memory: 2.8M CGroup: /system.slice/nginx.service ├─43323 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ├─43324 nginx: worker process └─43325 nginx: worker process Feb 06 08:58:43 ih-webserver-01 systemd[1]: Starting nginx - high performance web server... Feb 06 08:58:43 ih-webserver-01 systemd[1]: Started nginx - high performance web server. [opc@ih-webserver-01 ~]$
-
Utilizzare il seguente comando per verificare la versione dell'applicazione server Web NGINX.
[opc@ih-webserver-01 ~]$ nginx -v nginx version: nginx/1.25.3 [opc@ih-webserver-01 ~]$
-
firewalld
è un firewall personale basato su aree installato nell'implementazione di Oracle Linux su OCI. Un firewall è già configurato mediante la lista di sicurezza predefinita nelle subnet VCN. Il serviziofirewalld
interno verrà disabilitato. eseguire il comando seguente.[opc@ih-webserver-01 nginx]$ sudo systemctl stop firewalld [opc@ih-webserver-01 nginx]$ sudo systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [opc@ih-webserver-01 nginx]$ sudo setenforce 0 [opc@ih-webserver-01 nginx]$
-
Per verificare se il servizio server Web è in esecuzione, verificare che il listener sia in esecuzione. eseguire il comando seguente. Si noti che i tre servizi NGINX eseguono tutte le operazioni di ascolto su IPv4 e sulla porta
80
. Ciò che spicca qui è che ci manca il listener IPv6.[opc@ih-webserver-01 ~]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 71u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 82u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 43323 root 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43324 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN) nginx 43325 nginx 6u IPv4 98324 0t0 TCP *:80 (LISTEN)
-
Un altro controllo rapido, facciamo un arricciatura al webserver locale per vedere se possiamo vedere il webserver NGINX predefinito è raggiungibile utilizzando IPv4.
[opc@ih-webserver-01 ~]$ curl http://localhost <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 ~]$
-
Lo stesso test verrà eseguito da Internet utilizzando lo stesso sito Web IPv6 Online Port Scanner e ora la porta è OPEN per IPv4.
-
Il test finale sarà quello di testare il sito web o il server web è raggiungibile utilizzando un browser remoto utilizzando IPv4. L'URL utilizzato è
http://144.xxx.xxx.xxx
. -
Anche se abbiamo installato l'applicazione webserver NGINX, otteniamo comunque il seguente risultato per l'indirizzo IPv6.
Per risolvere questo problema, è necessario assicurarsi che il server Web sia configurato per ascoltare anche gli indirizzi IPv6. A tale scopo, modificare il file nginx
default.conf
.[opc@ih-webserver-01 conf.d]$ sudo nano /etc/nginx/conf.d/default.conf
La sezione server del file di configurazione è simile a questa.
server { listen 80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
Aggiungere la riga seguente alla sezione Server.
**listen [::]:80;**
Verrà visualizzata la sezione server in questo modo.
server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; }
Dopo l'aggiornamento, verrà visualizzato il file
default.conf
.[opc@ih-webserver-01 conf.d]$ sudo more /etc/nginx/conf.d/default.conf server { listen 80; **listen [::]:80;** server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } [opc@ih-webserver-01 conf.d]$
-
Utilizzare il seguente comando per riavviare il server Web NGINX.
[opc@ih-webserver-01 ~]$ sudo systemctl restart nginx
-
Utilizzare il seguente comando per verificare di nuovo i listener. Notare che NGINX è anche elencato su IPv6 accanto a IPv4 ora.
[opc@ih-webserver-01 conf.d]$ sudo lsof -i -P -n | grep LISTEN systemd 1 root 46u IPv4 19039 0t0 TCP *:111 (LISTEN) systemd 1 root 48u IPv6 19041 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 4u IPv4 19039 0t0 TCP *:111 (LISTEN) rpcbind 1421 rpc 6u IPv6 19041 0t0 TCP *:111 (LISTEN) osms-agen 2429 root 7u IPv6 41713 0t0 TCP 127.0.0.1:32768 (LISTEN) osms-agen 2429 root 10u IPv4 41722 0t0 TCP 127.0.0.1:9003 (LISTEN) pmcd 2469 pcp 0u IPv4 35603 0t0 TCP 127.0.0.1:44321 (LISTEN) pmcd 2469 pcp 3u IPv6 35604 0t0 TCP [::1]:44321 (LISTEN) pmlogger 3188 pcp 7u IPv4 42005 0t0 TCP 127.0.0.1:4330 (LISTEN) pmlogger 3188 pcp 8u IPv6 42006 0t0 TCP [::1]:4330 (LISTEN) sshd 6745 root 3u IPv4 54797 0t0 TCP *:22 (LISTEN) sshd 6745 root 4u IPv6 54799 0t0 TCP *:22 (LISTEN) nginx 54944 root 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54944 root 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54945 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 6u IPv4 219674 0t0 TCP *:80 (LISTEN) nginx 54946 nginx 7u IPv6 219675 0t0 TCP *:80 (LISTEN) [opc@ih-webserver-01 conf.d]$
Lo stesso test verrà eseguito da Internet utilizzando lo stesso sito Web IPv6 Online Port Scanner e ora la porta è OPEN per IPv6.
Un altro controllo rapido, facciamo un arricciatura al webserver locale per vedere se possiamo vedere il webserver NGINX predefinito è raggiungibile utilizzando IPv6.
[opc@ih-webserver-01 conf.d]$ curl -6 "http://[::1]:80" <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> [opc@ih-webserver-01 conf.d]$
-
Il test finale consiste nel verificare se il sito Web o il server Web è raggiungibile utilizzando un browser remoto utilizzando IPv6. L'URL utilizzato è
http://[2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
Nota: quando si utilizza un indirizzo IPv6 nel browser, è necessario posizionarlo tra parentesi quadre.
Task 7: Configurare i record DNS
Nota: i domini utilizzati in questa esercitazione sono stati creati e configurati solo a scopo di test.
Ora, il sito web o webserver è raggiungibile da Internet. Stiamo facendo un passo avanti configurando un FQDN che può essere ricordato più facilmente di un indirizzo IPv4 o di un indirizzo IPv6. Per questa esercitazione viene utilizzato il seguente sottodominio come esempio: oci.iwanhoogendoorn.nl per il nuovo server Web.
-
Accederemo al pannello di amministrazione del dominio del registrar per il dominio
iwanhoogendoorn.nl
.- Si noti che è stato selezionato il dominio corretto da configurare.
- Selezionare DNS Management.
-
Tutti i record DNS per il dominio iwanhoogendoorn.nl sono elencati come mostrato nell'immagine seguente.
- Aggiungere il sottodominio
oci
al dominio per IPv4 e selezionare l'indirizzo IPv4 pubblico dell'istanza. - Fare clic su Aggiungi.
- Ora aggiungiamo il sottodominio
oci
al dominio per IPv6 e selezioniamo l'indirizzo IPv6 dell'istanza. - Fare clic su Aggiungi.
- Nella pagina di panoramica DNS, esaminare il record DNS oci.iwanhoogendoorn.nl per IPv4.
- Nella pagina di panoramica DNS, esaminare il record DNS oci.iwanhoogendoorn.nl per IPv6.
- Aggiungere il sottodominio
-
Utilizzare il comando
nslookup
per verificare che oci.iwanhoogendoorn.nl sia stato risolto nell'indirizzo IPv4 corretto.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup oci.iwanhoogendoorn.nl
-
Utilizzare il comando
nslookup
per verificare che oci.iwanhoogendoorn.nl sia stato risolto nell'indirizzo IPv6 corretto.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup -q=AAAA oci.iwanhoogendoorn.nl
Task 8: Creare un sito Web personalizzato con NGINX e PHP
Creeremo un sito web o uno script PHP personalizzato che fornisce un po 'più informazioni sulla rete e gli indirizzi IP con NGINX.
-
Installare PHP FastCGI Process Manager (PHP-FPM). PHP-FPM è un daemon FastCGI alternativo per PHP che consente a un sito Web di gestire carichi elevati.
sudo dnf install php-fpm
-
Controllare la versione PHP installata.
[opc@ih-webserver-01 /]$ php -v PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies [opc@ih-webserver-01 /]$
-
Per far funzionare NGINX con PHP e viceversa è necessario eseguire alcune configurazioni. Un file di configurazione sul lato PHP e sul lato NGNIX.
A seconda della distribuzione Linux, delle versioni NGINX e PHP-FPM, i nomi dei file di configurazione e dei percorsi possono essere diversi e questo rende l'integrazione parte di NGINX e PHP molto più difficile.
File e directory importanti per PHP-FPM e NGINX.
Descrizione Oracle Linux 8 Altre installazioni/distribuzioni Percorso radice Web NGINX /usr/share/nginx/html /usr/share/nginx/www File di configurazione FPM PHP /etc/php-fpm.d/www.conf php-fpm.conf File di configurazione NGINX /etc/nginx/conf.d/default.conf nginx.conf File socket FPM PHP /run/php-fpm/www.sock php-fpm.sock, phpx.x-fpm.sock (x.x = versione) File di impostazioni FastCGI /etc/nginx/fastcgi_params fastcgi.conf File di configurazione PHP /etc/php.ini
Per integrare NGINX con PHP, segui i passaggi seguenti:
-
Modificare il file di configurazione PHP-FPM per integrare NGINX.
Modificare il file
/etc/php-fpm.d/www.conf
.sudo nano /etc/php-fpm.d/www.conf
-
Contenuto del file
/etc/php-fpm.d/www.conf
prima delle modifiche.; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd **user =** apache ; RPM: Keep a group allowed to write in log dir. **group =** apache
-
Contenuto del file
/etc/php-fpm.d/www.conf
dopo le modifiche.; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd **user = nginx** ; RPM: Keep a group allowed to write in log dir. **group = nginx**
-
-
Modificare il file di configurazione NGINX per integrare PHP-FPM.
-
Modificare il file
/etc/nginx/conf.d/default.conf
.[opc@ih-webserver-01 html]$ sudo nano /etc/nginx/conf.d/default.conf
-
Aggiungere la seguente configurazione.
location / { **# where is the NGINX root www folder?** root /usr/share/nginx/html; # what are the default index files to look for in the directory? index **index.php** index.html index.htm; } # tell NGINX what to do when it sees PHP-FPM giving a 404 HTTP status in the response **location = /404.php { # where is the NGINX root www folder? root /usr/share/nginx/html; # not return error responses with relevant status codes fastcgi_intercept_errors off; # where is PHP-FPM listening? the socket fastcgi_pass unix:/var/run/php-fpm/www.sock; # everytime we're in this location, tell PHP-FPM the complete script filename to be executed fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # and don't forget to tell PHP-FPM stuff like SERVER_NAME: include fastcgi_params; }** # tell NGINX what to do when it sees PHP-FPM a .php file **location ~ \.php$ { # where is the NGINX root www folder? root /usr/share/nginx/html; # define custom error pages error_page 404 /404.php; # return error responses with relevant status codes fastcgi_intercept_errors on; # where is PHP-FPM listening? the socket fastcgi_pass unix:/var/run/php-fpm/www.sock; # everytime we're in this location, tell PHP-FPM the complete script filename to be executed fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # and don't forget to tell PHP-FPM stuff like SERVER_NAME: include fastcgi_params; }**
-
-
Modificare il file di configurazione
php.ini
.-
Modificare il file
/etc/php.ini
.[opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
-
Assicurarsi che la riga seguente sia presente, modificata o non commentata.
cgi.fix_pathinfo = 0;
-
-
Riavviare i servizi PHP-FPM e NGINX.
-
Riavviare il servizio PHP-FPM.
sudo systemctl start php-fpm
-
riavviare il servizio NGINX.
sudo systemctl restart nginx
-
-
Creare una pagina personalizzata per la pagina Web corretta da gestire e sottoporre a test.
-
Creare una pagina
404.php
personalizzata. Ciò è necessario per gestire correttamente il reindirizzamento a una pagina 404 personalizzata se la pagina non esiste e si sta tentando di accedervi.[opc@ih-webserver-01 html]$ sudo nano 404.php
Codice per la pagina
404.php
personalizzata.<?php header("HTTP/1.0 404 Not Found"); ?> <html> <head> <title>404 Error - Page Not Found</title> </head> <body>404 Error - Page Not Found!</body> </html>
-
Creare una pagina
info.php
personalizzata.[opc@ih-webserver-01 html]$ sudo nano info.php
Codice per la pagina
info.php
.<?php phpinfo();
-
Prova il sito web
info.php
che fornisce la prova che PHP sta lavorando con NGNIX.Quando il sito web è installato e configurato correttamente viene visualizzata la seguente pagina web. Questa pagina fornisce informazioni sugli indirizzi IPv4 o IPv6 locali e remoti, a seconda della versione IP utilizzata per la connessione. Questa pagina parlerà anche del protocollo che si sta utilizzando, HTTP o HTTPS.
-
Task 9: Testare il server Web da Internet
Nota: i domini utilizzati in questa esercitazione sono stati creati e configurati solo a scopo di test.
Anche se abbiamo già testato la raggiungibilità del sito web o del webserver utilizzando più metodi. Ci piace utilizzare il seguente sito Web per eseguire il test finale che verificherà la raggiungibilità e la configurazione dei record DNS in una sola volta. Il tuo sito IPv6 è pronto?
- Utilizzare il nome FQDN oci.iwanhoogendoorn.nl per eseguire il test.
- Verificare che i record DNS IPv4 siano configurati correttamente.
- Verificare che i record DNS IPv6 siano configurati correttamente.
- Verificare che il sito Web sia raggiungibile su IPv4.
- Verificare che il sito Web sia raggiungibile su IPv6.
Conferme
- Autore - Iwan Hoogendoorn (esperto di rete OCI)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Use Oracle Cloud Infrastructure to Publish a Webserver Accessible from the Internet with IPv6
F93541-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.