Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Uso de Oracle Cloud Infrastructure para publicar un servidor web accesible desde Internet con IPv6
Introducción
En este tutorial, vamos a explicar cómo podemos crear un servidor web (instancia de OCI) dentro de Oracle Cloud Infrastructure (OCI) y haremos que este servidor web sea accesible desde Internet. No solo vamos a hacer que este servidor web sea accesible desde una dirección IPv4 pública, sino que también lo haremos accesible desde la dirección IPv6 pública con los registros DNS (FQDN) completamente configurados.
Nota: Los dominios que hemos utilizado en este tutorial se han creado y configurado solo con fines de prueba.
Objetivos
-
Cree un sitio web mediante una instancia de OCI a la que se pueda acceder a través de IPv6. También hemos explicado cómo crear y configurar todos los demás requisitos previos para que el sitio web esté disponible eventualmente. Además, hemos explicado cómo se instala el servidor web NGINX y cómo se integra PHP. Por fin, le proporcionaremos un sitio web o script PHP personalizado que se puede utilizar para verificar la conectividad IPv4 o IPv6 a su servidor web y si se conecta con HTTP o HTTPS.
- Tarea 1: Crear una nueva VCN con IPv6 activado.
- Tarea 2: Crear una nueva subred con IPv6 activado.
- Tarea 3: Crear una nueva instancia con IPv6 activado.
- Tarea 4: Crear un nuevo gateway de Internet y configurar el enrutamiento.
- Tarea 5: Abra HTTP y HTTPS en la lista de seguridad por defecto.
- Tarea 6: Instalar un servidor web en esta instancia.
- Tarea 7: Configurar registros DNS.
- Tarea 8: Crear un sitio web personalizado con NGINX y PHP.
- Tarea 9: Probar el servidor web desde Internet.
Tarea 1: Crear una nueva VCN con IPv6 activado
-
Abra el menú de hamburguesa y haga clic en Red virtual en la nube.
- Asegúrese de seleccionar Redes virtuales en la nube en el menú.
- Seleccione el compartimento en el que desea trabajar. Si no ha configurado el compartimento, utilice el compartimento raíz.
- Haga clic en Crear VCN.
-
En Crear una red virtual en la nube, introduzca la siguiente información.
- Introduzca un nombre de VCN.
- Vuelva a seleccionar el compartimento si aún no se ha rellenado previamente.
- Select the IPv4 CIDR that you want to use inside this VCN. Para este tutorial, hemos utilizado un CIDR /16 porque las subredes IPv4 (normalmente, /24) se extraen de este reloj CIDR.
- Desplazar hacia abajo.
- Para IPv6, asignaremos un prefijo asignado por Oracle. Seleccione Asignar un prefijo /56 asignado por Oracle.
- Haga clic en Crear VCN.
Ahora hemos creado una nueva VCN con nuevos espacios de red IPv4 y IPv6 que podemos utilizar para tallar subredes IPv4 y IPv6.
Tarea 2: Crear una nueva subred con IPv6 activado
-
Haga clic en Crear subred.
-
En Subred, introduzca la siguiente información.
- Introduzca el nombre de la subred.
- Seleccione el compartimento en el que debe estar esta subred, si aún no se ha rellenado previamente.
- En Tipo de subred, seleccionaremos Regional por ahora.
- Introduzca la subred IPv4 que extraeremos del bloque de CIDR que hemos asignado en la VCN. Asegúrese de que el nuevo bloque de CIDR /24 esté dentro del /16 determinado en la VCN.
- Desplazar hacia abajo.
- Para IPv6, asignaremos un prefijo asignado por Oracle. Seleccione Asignar un prefijo /64 asignado por Oracle.
- Seleccione un nuevo decimal HEX para completar el prefijo asignado de Oracle.
- Seleccione la tabla de rutas por defecto para la VCN.
- Haga que la subred sea pública, de modo que obtengamos direcciones IP públicas, ya que la necesitamos para que el servidor web sea accesible desde Internet.
- Desplazar hacia abajo.
- Seleccione el DHCP predeterminado para la VCN.
- Seleccione la lista de seguridad por defecto de la VCN.
- Haga clic en Crear subred.
-
Observe que el estado de la subred recién creada es Aprovisionando.
Transcurridos unos minutos, el estado de la nueva subred será Disponible.
Ahora la subred está lista para su uso para las direcciones IPv4 y IPv6.
Tarea 3: Creación de una nueva instancia con IPv6 activado
-
Abra la consola de OCI.
- Haga clic en el menú de hamburguesa de la esquina superior izquierda.
- Haga clic en Instancias en la sección anclada.
-
Haga clic en Crear instancia.
-
En Crear instancia informática, introduzca la siguiente información.
- Introduzca el nombre de la instancia.
- Seleccione el compartimento en el que debe estar la instancia.
- Seleccione en qué dominio de disponibilidad desea colocar esta instancia. Para este tutorial, como región del noroeste de los Países Bajos, solo tenemos un dominio de disponibilidad.
- Desplazar hacia abajo.
Mantenga todo por defecto y desplácese hacia abajo.
- En Red principal, seleccione Seleccionar red virtual existente en la nube.
- Seleccionó la VCN creada en la tarea 1.
- Para la subred, seleccione Seleccionar subred existente.
- Seleccione la subred creada en la tarea 2.
- Desplazar hacia abajo.
- Dirección IPv4 privada: seleccione Asignar automáticamente dirección IPv4 privada.
- Dirección IPv6: seleccione Asignar direcciones IPv6 del prefijo de subred que se configuró durante la creación de la subred en la tarea 2.
- Asignación de dirección IPv6: seleccione Asignar automáticamente la dirección IPv6 privada del prefijo.
- Desplazar hacia abajo.
- Para acceder a esta instancia de Linux y gestionarla, necesitamos trabajar con claves SSH. Para este tutorial, dejaremos que OCI genere un nuevo par de claves SSH.
- Descargue las claves privadas y públicas en la computadora local para que podamos utilizarlas para acceder a esta instancia de Linux y gestionarla después de su creación.
-
Haga clic en Crear para crear la instancia.
- Durante la creación, el estado de la instancia será Aprobando.
- Observe que aún no hay detalles de dirección IP disponibles.
- Cuando la instancia esté completamente creada y lista, el estado se definirá en EN EJECUCIÓN.
- Observe que los detalles de la dirección IP están disponibles ahora.
La siguiente tarea lógica será acceder a la instancia mediante SSH para que podamos empezar a instalar y configurar el servidor web. Cuando intentamos conectarnos al servidor web mediante la dirección IPv4 pública y la clave privada, no podemos conectarnos porque la VCN creada en la tarea 1 no tiene ningún gateway de Internet y ahora tenemos que crear ese gateway de Internet primero en la VCN y también configurar el enrutamiento.
Tarea 4: Crear un nuevo gateway de Internet y configurar el enrutamiento
Para permitir el acceso a una nueva instancia (servidor web) desde Internet, inicialmente mediante SSH y, finalmente, mediante la transición a HTTP, debemos establecer un gateway de Internet.
-
Abra la consola de OCI.
- Vaya a Redes virtuales en la nube.
- Seleccione la VCN creada en la tarea 1.
-
En la página Detalles de VCN, haga clic en Gateways de Internet.
-
Haga clic en Crear gateway de internet.
-
En Create Internet Gateway, introduzca la siguiente información.
- Introduzca el nombre.
- Seleccionar el compartimento.
- Haga clic en Crear gateway de internet.
-
Agregue una regla de ruta.
- Tenga en cuenta que el gateway de Internet está disponible.
- Haga clic en Tablas de rutas.
- Observe que la tabla de rutas por defecto tiene un valor
0
en el número de reglas. - Haga clic en Default Route Table.
- Versión de protocolo: seleccione IPv4.
- Tipo de objetivo: seleccione Gateway de Internet.
- Bloque de CIDR de destino: para este tutorial, seleccione
0.0.0.0/0
porque queremos que todo el tráfico de red IPv4 por defecto vaya al gateway de Internet. - Seleccione el gateway de Internet de destino creado anteriormente en esta tarea.
- Haga clic en Agregar reglas de ruta.
- Observe que se ha creado la nueva regla de ruta por defecto IPv4.
- Para enrutar el tráfico de Internet IPv6, también necesitamos crear una nueva regla de Internet por defecto IPv6. Haga clic de nuevo en Agregar reglas de ruta.
- Versión de protocolo: seleccione IPv6.
- Tipo de objetivo: seleccione Gateway de Internet.
- Bloque de CIDR de destino: para este tutorial, seleccione
:/0
porque queremos que todo el tráfico de red IPv6 por defecto vaya al gateway de Internet. - Seleccione el gateway de Internet de destino creado anteriormente en esta tarea.
- Haga clic en Agregar reglas de ruta.
-
Observe que se ha creado la nueva regla de ruta por defecto IPv6.
- Nos conectamos a la instancia recién creada mediante SSH mediante la clave privada.
- Una vez que la conexión se haya establecido correctamente, ejecute el comando
ip a
para verificar las direcciones IP. - Observe que la dirección IPv4 privada es la misma que la proporcionada para los detalles de la instancia.
- También probamos la conexión mediante el terminal de la CLI macOS y ejecutamos el comando
ssh -i ssh-key-2024-02-05.key opc@xxx.xxx.xxx.48
. - Una vez que la conexión se haya establecido correctamente, ejecute el comando
ip a
para verificar las direcciones IP. - Observe que la dirección IPv4 privada es la misma que la proporcionada para los detalles de la instancia en la consola de OCI.
Tenga en cuenta que la instancia no tiene la dirección IPv6 proporcionada para los detalles de la instancia en la consola de OCI.
-
Este problema se puede solucionar reiniciando la instancia.
- Navegue a la instancia.
- Haga clic en Reiniciar.
- Vuelva a conectarse a la instancia mediante SSH con la clave privada.
- Una vez que la conexión se haya establecido correctamente, ejecute el comando
ip a
para verificar las direcciones IP. - Observe que la dirección IPv4 privada es la misma que la proporcionada en los detalles de la instancia.
- Observe que la dirección IPv6 privada es la misma que la proporcionada en los detalles de la instancia.
- Para probar la conectividad hacia internet también hacemos un ping a la dirección IP IPv6 de uno de los servidores DNS de Google.
- Realice una prueba rápida para ver si podemos conectarnos a una instancia mediante una dirección IPv6. Ejecute el comando
ssh -i ssh-key-2024-02-05.key opc@2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
para probarlo. - Una vez que la conexión se haya establecido correctamente, ejecute el comando
ip a
para verificar las direcciones IP. - Observe que la dirección IPv4 privada es la misma que la proporcionada en los detalles de la instancia.
- Observe que la dirección IPv6 privada es la misma que la proporcionada en los detalles de la instancia.
Tarea 5: Abrir HTTP y HTTPS en la lista de seguridad por defecto
Cuando se crea una nueva VCN, se aplica una lista de seguridad por defecto a las subredes de esa VCN. Por defecto, ICMP y SSH están permitidos en entrada (entrada). Necesitamos agregar HTTP y HTTPS a esa lista para permitir el tráfico entrante para el servidor web.
-
Haga clic en el menú de hamburguesa y seleccione Redes virtuales en la nube.
-
Haga clic en la VCN creada en la tarea 1.
-
Desplazar hacia abajo.
-
Haga clic en Listas de seguridad.
-
Haga clic en Lista de seguridad por defecto.
-
Haga clic en Agregar reglas de entrada.
-
Agregue nuevas reglas de seguridad para el tráfico de red IPv4.
- Tipo de origen: seleccione CIDR.
- IDR de origen: introduzca
0.0.0.0/0
. - Protocolo IP: seleccione TCP.
- Rango de puertos de origen: mantenga el valor por defecto (Todo).
- Rango de puertos de destino: seleccione
80,443
(HTTP y HTTPS). - Introduzca la descripción.
- Haga clic en Agregar reglas de entrada.
-
Revise las reglas de seguridad IPv4 para permitir el tráfico HTTP y HTTPS entrante.
-
Para agregar nuevas reglas de seguridad para el tráfico de red IPv6, cree nuevas reglas de entrada. Haga clic de nuevo en Agregar reglas de entrada.
- Tipo de origen: seleccione CIDR.
- IDR de origen: introduzca
::/0
. - Protocolo IP: seleccione TCP.
- Rango de puertos de origen: mantenga el valor por defecto (Todo).
- Rango de puertos de destino: seleccione
80,443
(HTTP y HTTPS). - Introduzca la descripción.
- Haga clic en Agregar reglas de entrada.
-
Revise las reglas de seguridad IPv6 para permitir el tráfico HTTP y HTTPS entrante.
Las reglas de seguridad están establecidas y se permite el tráfico IPv4 y IPv6 en las subredes de VCN. Instalaremos la aplicación de servidor web en la instancia.
Tarea 6: Instalación de un servidor web en una instancia
Antes de instalar la aplicación de servidor web, valide rápidamente si los puertos de firewall están configurados correctamente. Utilice el siguiente sitio web IPV6 Online Port Scanner. Este sitio web tiene un escáner de puerto IPv6, pero también puede introducir direcciones IPv4.
-
Introduzca la dirección IPv4 con los detalles para realizar la exploración en el puerto TCP
80
. Tenga en cuenta que este estado es CLOSED, ya que la aplicación del servidor web aún no está instalada y el estado no es FILTERED, ya que hemos agregado las reglas a la lista de seguridad predeterminada. -
Para la dirección IPv6, introduzca los siguientes detalles. La salida es la misma que IPv4 por los mismos motivos.
-
En la consola de terminal de instancia de servidor web o SSH. Introduzca los siguientes comandos para actualizar el gestor de paquetes de software DNF e instalar las utilidades DNF.
[opc@ih-webserver-01 ~]$ sudo dnf update -y [opc@ih-webserver-01 ~]$ sudo dnf install dnf-utils -y
-
Actualice el archivo
nginx.repo
para especificar los detalles para descargar e instalar la aplicación de servidor web NGINX.[opc@ih-webserver-01 ~]$ sudo nano /etc/yum.repos.d/nginx.repo
Copie y pegue el siguiente contenido en el archivo
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
Verifique el contenido del archivo
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 ~]$
-
Por defecto, se utiliza el repositorio para paquetes Nginx estables. Para utilizar paquetes de Nginx mainline, ejecute el siguiente comando.
[opc@ih-webserver-01 ~]$ sudo yum-config-manager --enable nginx-mainline
-
Utilice el siguiente comando para instalar la aplicación de servidor web NGINX.
[opc@ih-webserver-01 ~]$ sudo dnf install nginx
-
Para iniciar la aplicación de servidor web NGINX, ejecute el siguiente comando.
[opc@ih-webserver-01 ~]$ sudo systemctl start nginx
-
Una vez finalizada la instalación, active NGINX para que se inicie automáticamente al iniciar el sistema e inicie el servidor 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.
-
Utilice el siguiente comando para verificar el estado de ejecución de la aplicación de servidor 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 ~]$
-
Utilice el siguiente comando para verificar la versión de la aplicación de servidor web NGINX.
[opc@ih-webserver-01 ~]$ nginx -v nginx version: nginx/1.25.3 [opc@ih-webserver-01 ~]$
-
firewalld
es un firewall personal basado en zonas que se instala en el despliegue de Oracle Linux en OCI. Ya tenemos un firewall configurado mediante la lista de seguridad por defecto en las subredes de VCN. Desactivaremos el serviciofirewalld
interno. Ejecute el siguiente comando.[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]$
-
Para verificar si el servicio de servidor web se está ejecutando, compruebe si el listener se está ejecutando. Ejecute el siguiente comando. Observe que los tres servicios NGINX están ejecutando todos los servicios de recepción en IPv4 y el puerto
80
. Lo que destaca aquí es que nos falta el 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)
-
Otra comprobación rápida, hacemos un curl al servidor web local para ver si podemos ver si el servidor web NGINX predeterminado es accesible usando 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 ~]$
-
Haremos la misma prueba desde Internet utilizando el mismo sitio web IPv6 Online Port Scanner y ahora el puerto es OPEN para IPv4.
-
La prueba final será probar que el sitio web o servidor web es accesible utilizando un navegador remoto utilizando IPv4. La URL utilizada es
http://144.xxx.xxx.xxx
. -
Aunque hemos instalado la aplicación de servidor web NGINX, obtenemos el siguiente resultado para la dirección IPv6.
Para solucionar esto, debemos asegurarnos de que el servidor web esté configurado para escuchar también las direcciones IPv6. Para ello, edite el archivo nginx
default.conf
.[opc@ih-webserver-01 conf.d]$ sudo nano /etc/nginx/conf.d/default.conf
La sección server del archivo de configuración tiene este aspecto.
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; }
Agregue la siguiente línea a la sección del servidor.
**listen [::]:80;**
La sección server se verá así.
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; }
Después de la actualización, el archivo
default.conf
será similar.[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]$
-
Utilice el siguiente comando para reiniciar el servidor web NGINX.
[opc@ih-webserver-01 ~]$ sudo systemctl restart nginx
-
Utilice el siguiente comando para verificar los listeners de nuevo. Observe que NGINX también aparece en IPv6 junto a IPv4 ahora.
[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]$
Haremos la misma prueba desde Internet utilizando el mismo sitio web IPv6 Online Port Scanner y ahora el puerto es OPEN para IPv6.
Otra comprobación rápida, hacemos un curl al servidor web local para ver si podemos ver si el servidor web NGINX predeterminado es accesible usando 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]$
-
La prueba final es probar si se puede acceder al sitio web o al servidor web mediante un explorador remoto mediante IPv6. La URL utilizada es
http://[2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
Nota: Cuando utilizamos una dirección IPv6 en el explorador, debemos colocarla entre corchetes.
Tarea 7: Configuración de registros DNS
Nota: Los dominios que hemos utilizado en este tutorial se han creado y configurado solo con fines de prueba.
Ahora, el sitio web o servidor web es accesible desde Internet. Vamos un paso más allá configurando un FQDN que se pueda recordar más fácilmente que una dirección IPv4 o una dirección IPv6. Para este tutorial, utilizamos el siguiente subdominio como ejemplo: oci.iwanhoogendoorn.nl para el nuevo servidor web.
-
Iniciaremos sesión en el panel de administración de dominios del registrador para el dominio
iwanhoogendoorn.nl
.- Observe que hemos seleccionado el dominio correcto para configurar.
- Seleccione Gestión de DNS.
-
Todos los registros DNS para el dominio iwanhoogendoorn.nl se muestran como se muestra en la siguiente imagen.
- Agregue el subdominio
oci
al dominio para IPv4 y seleccione la dirección IPv4 pública de la instancia. - Haga clic en Agregar.
- A continuación, agreguemos el subdominio
oci
al dominio para IPv6 y seleccionemos la dirección IPv6 de la instancia. - Haga clic en Agregar.
- En la página de visión general de DNS, revise el registro de DNS oci.iwanhoogendoorn.nl para IPv4.
- En la página de visión general de DNS, revise el registro de DNS oci.iwanhoogendoorn.nl para IPv6.
- Agregue el subdominio
-
Utilice el comando
nslookup
para probar que oci.iwanhoogendoorn.nl se haya resuelto en la dirección IPv4 correcta.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup oci.iwanhoogendoorn.nl
-
Utilice el comando
nslookup
para probar que oci.iwanhoogendoorn.nl se haya resuelto en la dirección IPv6 correcta.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup -q=AAAA oci.iwanhoogendoorn.nl
Tarea 8: Crear un sitio web personalizado con NGINX y PHP
Crearemos un sitio web o script PHP personalizado que proporcione un poco más de información sobre la red y las direcciones IP con NGINX.
-
Instale el gestor de procesos PHP FastCGI (PHP-FPM). PHP-FPM es un daemon FastCGI alternativo para PHP que permite a un sitio web manejar cargas altas.
sudo dnf install php-fpm
-
Compruebe la versión de PHP instalada.
[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 /]$
-
Para que NGINX funcione con PHP y, al contrario, se debe realizar alguna configuración. Un archivo de configuración en el lado de PHP y el lado de NGNIX.
Dependiendo de la distribución de Linux, las versiones NGINX y PHP-FPM, los nombres de los archivos de configuración y los nombres de las rutas pueden ser diferentes y esto hace que la integración sea parte de NGINX y PHP mucho más difícil.
Archivos y directorios importantes para PHP-FPM y NGINX.
Descripción Oracle Linux 8 Otras instalaciones/distribuciones Ruta raíz web de NGINX /usr/share/nginx/html /usr/share/nginx/www Archivo de configuración de FPM de PHP /etc/php-fpm.d/www.conf php-fpm.conf Archivo de configuración de NGINX /etc/nginx/conf.d/default.conf nginx.conf Archivo de socket FPM de PHP /run/php-fpm/www.sock php-fpm.sock, phpx.x-fpm.sock (x.x = versión) Archivo de configuración de FastCGI /etc/nginx/fastcgi_params fastcgi.conf Archivo de configuración PHP /etc/php.ini
Para integrar NGINX con PHP, siga los pasos siguientes:
-
Edite el archivo de configuración de PHP-FPM para integrar NGINX.
Edite el archivo
/etc/php-fpm.d/www.conf
.sudo nano /etc/php-fpm.d/www.conf
-
Contenido del archivo
/etc/php-fpm.d/www.conf
antes de los cambios.; 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
-
Contenido del archivo
/etc/php-fpm.d/www.conf
después de los cambios.; 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**
-
-
Edite el archivo de configuración de NGINX para integrar PHP-FPM.
-
Edite el archivo
/etc/nginx/conf.d/default.conf
.[opc@ih-webserver-01 html]$ sudo nano /etc/nginx/conf.d/default.conf
-
Agregue la siguiente configuración.
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; }**
-
-
Edite el archivo de configuración
php.ini
.-
Edite el archivo
/etc/php.ini
.[opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
-
Asegúrese de que la siguiente línea esté presente, modificada o sin comentarios.
cgi.fix_pathinfo = 0;
-
-
Reinicie los servicios PHP-FPM y NGINX.
-
Reinicie el servicio PHP-FPM.
sudo systemctl start php-fpm
-
Reinicie el servicio NGINX.
sudo systemctl restart nginx
-
-
Cree una página personalizada para que la página web adecuada la gestione y pruebe.
-
Cree una página
404.php
personalizada. Esto es necesario para manejar correctamente la redirección a una página 404 personalizada si la página no existe y se intenta acceder a ella.[opc@ih-webserver-01 html]$ sudo nano 404.php
Código para la página personalizada
404.php
.<?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>
-
Cree una página
info.php
personalizada.[opc@ih-webserver-01 html]$ sudo nano info.php
Código para la página
info.php
.<?php phpinfo();
-
Pruebe el sitio web
info.php
que proporciona la prueba de que PHP está trabajando con NGNIX.Cuando el sitio web está instalado y configurado correctamente, se muestra la siguiente página web. Esta página proporcionará información sobre las direcciones IPv4 o IPv6 locales y remotas en función de la versión de IP que utilice para conectarse. Esta página también informará sobre el protocolo que está utilizando, HTTP o HTTPS.
-
Tarea 9: Prueba del Servidor Web desde Internet
Nota: Los dominios que hemos utilizado en este tutorial se han creado y configurado solo con fines de prueba.
A pesar de que ya hemos probado la accesibilidad del sitio web o servidor web utilizando múltiples métodos. Nos gusta utilizar el siguiente sitio web para realizar la prueba final que probará la accesibilidad y la configuración del registro DNS de una sola vez. ¿Está listo su sitio IPv6?
- Utilice el FQDN oci.iwanhoogendoorn.nl para realizar la prueba.
- Verifique que los registros DNS IPv4 estén configurados correctamente.
- Verifique que los registros DNS IPv6 estén configurados correctamente.
- Compruebe que se puede acceder al sitio web en IPv4.
- Compruebe que se puede acceder al sitio web en IPv6.
Agradecimientos
- Autor: Iwan Hoogendoorn (especialista en redes de OCI)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use Oracle Cloud Infrastructure to Publish a Webserver Accessible from the Internet with IPv6
F93540-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.