Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Use o Oracle Cloud Infrastructure para Publicar um Servidor Web Acessível pela Internet com IPv6
Introdução
Neste tutorial, explicaremos como podemos criar um servidor Web (instância OCI) na Oracle Cloud Infrastructure (OCI) e tornaremos esse servidor Web acessível pela internet. Não só tornaremos esse servidor Web acessível a partir de um endereço IPv4 público, mas também o tornaremos acessível a partir do endereço IPv6 público com os registros DNS (FQDN) totalmente configurados.
Observação: os domínios que usamos neste tutorial foram criados e configurados apenas para fins de teste.
Objetivos
-
Crie um site usando uma instância do OCI acessível por meio de IPv6. Também explicamos como criar e configurar todos os outros pré-requisitos para disponibilizar o site eventualmente. Como bônus, também explicamos como o servidor da Web NGINX está instalado e como o PHP está integrado. Por fim, forneceremos um site ou script PHP personalizado que pode ser usado para verificar a conectividade IPv4 ou IPv6 com seu servidor Web e se você estiver se conectando com HTTP ou HTTPS.
- Tarefa 1: Criar uma nova VCN com IPv6 ativado.
- Tarefa 2: Crie uma nova sub-rede com IPv6 ativado.
- Tarefa 3: Crie uma nova instância com IPv6 ativado.
- Tarefa 4: Criar um novo gateway de internet e configurar o roteamento.
- Tarefa 5: Abra HTTP e HTTPS na lista de segurança padrão.
- Tarefa 6: Instalar um servidor Web nesta instância.
- Tarefa 7: Configurar registros de DNS.
- Tarefa 8: Criar um site personalizado com NGINX e PHP.
- Tarefa 9: Testar o servidor web a partir da internet.
Tarefa 1: Criar uma Nova VCN com IPv6 Ativado
-
Abra o menu de hambúrguer e clique em Virtual Cloud Networking.
- Certifique-se de selecionar Redes Virtuais na Nuvem no menu.
- Selecione o compartimento no qual você deseja trabalhar. Se você não tiver configurado o compartimento, use o compartimento raiz.
- Clique em Criar VCN.
-
Em Criar Redes Virtuais na Nuvem, digite as informações a seguir.
- Digite um Nome de VCN.
- Selecione o compartimento novamente, se ele ainda não estiver pré-preenchido.
- Selecione o IPv4 CIDR que você deseja usar dentro dessa VCN. Para este tutorial, usamos um CIDR /16 porque as Sub-redes IPv4 (normalmente, /24) serão esculpidas deste relógio CIDR.
- Rolar para Baixo.
- Para IPv6, designaremos um prefixo alocado pela Oracle. Selecione Designar um prefixo /56 alocado pela Oracle.
- Clique em Criar VCN.
Agora criamos uma nova VCN com novos espaços de rede IPv4 e IPv6 que podemos usar para criar sub-redes IPv4 e IPv6.
Tarefa 2: Criar uma Nova Sub-rede com IPv6 Ativado
-
Clique em Criar Sub-rede.
-
Em Sub-rede, digite as informações a seguir.
- Digite o Nome da sub-rede.
- Selecione o compartimento no qual essa sub-rede precisa estar, se ele ainda não estiver pré-preenchido.
- Para o Tipo de Sub-rede, selecionaremos Regional por enquanto.
- Digite a sub-rede IPv4 que extrairemos do bloco CIDR designado na VCN. Certifique-se de que o novo bloco CIDR /24 esteja dentro do /16 determinado na VCN.
- Rolar para Baixo.
- Para IPv6, designaremos um prefixo alocado pela Oracle. Selecione Designar um prefixo /64 alocado pela Oracle.
- Selecione um novo decimal HEX para concluir o prefixo alocado pela Oracle.
- Selecione a tabela de roteamento padrão para a VCN.
- Torne a sub-rede pública, de modo que obtenhamos endereços IP públicos, pois precisamos disso para tornar o servidor Web acessível pela internet.
- Rolar para Baixo.
- Selecione o DHCP padrão para a VCN.
- Selecione a lista de segurança padrão para a VCN.
- Clique em Criar Sub-rede.
-
Observe que o estado da sub-rede recém-criada é Provisionando.
Após alguns minutos, o estado da nova sub-rede será Disponível.
Agora a sub-rede está pronta para ser usada para endereços IPv4 e IPv6.
Tarefa 3: Criar uma Nova Instância com IPv6 Ativado
-
Abra a Console do OCI.
- Clique no menu de hambúrguer no canto superior esquerdo.
- Clique em Instâncias na seção fixada.
-
Clique em Criar Instância.
-
Em Criar instância de computação, digite as informações a seguir.
- Informe o Nome da instância.
- Selecione o compartimento no qual a instância precisa estar.
- Selecione em qual Domínio de Disponibilidade você deseja colocar esta instância. Para este tutorial, como a região Noroeste da Holanda, temos apenas um domínio de disponibilidade.
- Rolar para Baixo.
Mantenha tudo padrão e role para baixo.
- Em Rede principal, selecione Selecionar rede virtual na nuvem existente.
- Selecionou a VCN criada na Tarefa 1.
- Para a sub-rede, selecione Selecionar sub-rede existente.
- Selecione a sub-rede criada na Tarefa 2.
- Rolar para Baixo.
- Endereço IPv4 privado: Selecione Designar endereço IPv4 privado automaticamente.
- Endereço IPv6: Selecione Designar endereços IPv6 do prefixo de sub-rede que foi configurado durante a criação da sub-rede na Tarefa 2.
- Designação de endereço IPv6: Selecione Designar automaticamente o endereço IPv6 privado do prefixo.
- Rolar para Baixo.
- Para acessar e gerenciar essa instância do Linux, precisamos trabalhar com Chaves SSH. Para este tutorial, vamos permitir que o OCI gere um novo par de chaves SSH.
- Faça download das chaves privadas e públicas no computador local para que possamos usá-las para acessar e gerenciar essa instância do Linux após a criação.
-
Clique em Criar para criar a instância.
- Durante a criação, o estado da instância será PROVISIONING.
- Observe que ainda não há detalhes de endereço IP disponíveis.
- Quando a instância estiver totalmente criada e pronta, o estado será definido como RUNNING.
- Observe que os detalhes do endereço IP estão disponíveis agora.
A próxima tarefa lógica será acessar a instância usando SSH para que possamos começar a instalar e configurar o servidor Web. Quando tentamos estabelecer conexão com o servidor Web usando o endereço IPv4 público e a chave privada, não podemos estabelecer conexão porque a VCN criada na Tarefa 1 não tem gateway de internet e agora precisamos criar esse gateway de internet primeiro na VCN e também configurar o roteamento.
Tarefa 4: Criar um Novo Gateway de Internet e Configurar o Roteamento
Para permitir o acesso a uma nova instância (servidor de internet) pela internet, inicialmente usando SSH e, eventualmente, fazendo a transição para HTTP, devemos estabelecer um gateway de internet.
-
Abra a Console do OCI.
- Vá para Redes Virtuais na Nuvem.
- Selecione a VCN criada na Tarefa 1.
-
Na página Detalhes da VCN, clique em Gateways de Internet.
-
Clique em Criar Gateway de Internet.
-
Em Create Internet Gateway, digite as informações a seguir.
- Informe o nome.
- Selecione o compartimento.
- Clique em Criar Gateway de Internet.
-
Adicione uma regra de roteamento.
- Observe que o gateway de internet está Disponível.
- Clique em Tabela de Roteamento.
- Observe que a Tabela de Roteamento Padrão tem um
0
no número de regras. - Clique em Default Route Table.
- Versão do Protocolo: Selecione IPv4.
- Tipo de Alvo: Selecione Gateway de Internet.
- Bloco CIDR de Destino: Para este tutorial, selecione
0.0.0.0/0
, pois queremos que todo o tráfego de rede IPv4 padrão vá para o gateway de internet. - Selecione o Gateway de Internet de Destino criado acima nesta tarefa.
- Clique em Adicionar Regras de Roteamento.
- Observe que a nova regra de roteamento padrão IPv4 foi criada.
- Para rotear o tráfego da internet IPv6, também precisamos criar uma nova regra de internet padrão IPv6. Clique em Adicionar Regras de Roteamento novamente.
- Versão do Protocolo: Selecione IPv6.
- Tipo de Alvo: Selecione Gateway de Internet.
- Bloco CIDR de Destino: Para este tutorial, selecione
:/0
, pois queremos que todo o tráfego de rede IPv6 padrão vá para o gateway de internet. - Selecione o Gateway de Internet de Destino criado acima nesta tarefa.
- Clique em Adicionar Regras de Roteamento.
-
Observe que a nova regra de roteamento padrão IPv6 foi criada.
- Estabelecemos conexão com a instância recém-criada por meio do SSH usando a chave privada.
- Depois que a conexão tiver sido estabelecida com sucesso, execute o comando
ip a
para verificar endereços IP. - Observe que o endereço IPv4 privado é o mesmo fornecido para os detalhes da instância.
- Também testamos a conexão usando o terminal da CLI macOS; execute o comando
ssh -i ssh-key-2024-02-05.key opc@xxx.xxx.xxx.48
. - Depois que a conexão tiver sido estabelecida com sucesso, execute o comando
ip a
para verificar endereços IP. - Observe que o endereço IPv4 privado é o mesmo fornecido para os detalhes da instância na Console do OCI.
Observe que a instância não tem o endereço IPv6 fornecido para os detalhes da instância na Console do OCI.
-
Esse problema pode ser corrigido fazendo uma reinicialização da instância.
- Navegar até a instância.
- Clique em Reinicializar.
- Conecte-se à instância novamente por meio do SSH usando a chave privada.
- Depois que a conexão tiver sido estabelecida com sucesso, execute o comando
ip a
para verificar endereços IP. - Observe que o endereço IPv4 privado é o mesmo fornecido nos detalhes da instância.
- Observe que o endereço IPv6 privado é o mesmo fornecido nos detalhes da instância.
- Para testar a conectividade com a internet, também fazemos um ping para o endereço IP IPv6 de um dos servidores DNS do Google.
- Faça um teste rápido para ver se podemos estabelecer conexão com uma instância usando um endereço IPv6. Execute o comando
ssh -i ssh-key-2024-02-05.key opc@2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
para testar. - Depois que a conexão tiver sido estabelecida com sucesso, execute o comando
ip a
para verificar endereços IP. - Observe que o endereço IPv4 privado é o mesmo fornecido nos detalhes da instância.
- Observe que o endereço IPv6 privado é o mesmo fornecido nos detalhes da instância.
Tarefa 5: Abrir HTTP e HTTPS na Lista de Segurança Padrão
Quando uma nova VCN é criada, uma lista de segurança padrão é aplicada às sub-redes dentro dessa VCN. Por padrão, ICMP e SSH são entradas permitidas (entrada). Precisamos adicionar HTTP e HTTPS a essa lista para permitir o tráfego de entrada para o servidor Web.
-
Clique no menu de hambúrguer e selecione Virtual Cloud Networks.
-
Clique na VCN criada na Tarefa 1.
-
Rolar para Baixo.
-
Clique em Lista de Segurança.
-
Clique em Lista de Segurança Padrão.
-
Clique em Adicionar Regras de Entrada.
-
Adicione novas regras de segurança para o tráfego de rede IPv4.
- Tipo de Origem: Selecione CIDR.
- CIDR de Origem: Digite
0.0.0.0/0
. - Protocolo IP: Selecione TCP.
- Source Port Range: Mantenha padrão (Todos).
- Intervalo de Portas de Destino: Selecione
80,443
(HTTP e HTTPS). - Informe a Descrição.
- Clique em Adicionar Regras de Entrada.
-
Revise as IPv4 Security Rules para permitir a entrada de tráfego HTTP e HTTPS.
-
Para adicionar novas regras de segurança para tráfego de rede IPv6, crie novas regras de entrada. Clique em Adicionar Regras de Entrada novamente.
- Tipo de Origem: Selecione CIDR.
- CIDR de Origem: Digite
::/0
. - Protocolo IP: Selecione TCP.
- Source Port Range: Mantenha padrão (Todos).
- Intervalo de Portas de Destino: Selecione
80,443
(HTTP e HTTPS). - Informe a Descrição.
- Clique em Adicionar Regras de Entrada.
-
Revise as IPv6 Security Rules para permitir a entrada de tráfego HTTP e HTTPS.
As regras de segurança estão em vigor e o tráfego IPv4 e IPv6 é permitido nas sub-redes da VCN. Instalaremos o aplicativo do servidor Web na instância.
Tarefa 6: Instalar um Servidor Web na Instância
Antes de instalarmos o aplicativo do servidor Web, valide rapidamente se as portas do firewall estão configuradas corretamente. Use o site IPV6 Online Port Scanner a seguir. Este site tem um scanner de porta IPv6, mas você também pode digitar endereços IPv4.
-
Informe o endereço IPv4 com os detalhes para executar a verificação na porta TCP
80
. Observe que esse estado é FECHADO, pois o aplicativo do servidor Web ainda não está instalado e o estado não é FILTRADO, pois adicionamos as regras à lista de segurança padrão. -
Para o endereço IPv6, informe os detalhes a seguir. A saída é a mesma que IPv4 pelos mesmos motivos.
-
Na console do terminal da instância do servidor Web ou SSH. Informe os comandos a seguir para atualizar o gerenciador de pacotes de software DNF e instalar utilitários DNF.
[opc@ih-webserver-01 ~]$ sudo dnf update -y [opc@ih-webserver-01 ~]$ sudo dnf install dnf-utils -y
-
Atualize o arquivo
nginx.repo
para especificar os detalhes para fazer download e instalar o aplicativo do servidor Web NGINX.[opc@ih-webserver-01 ~]$ sudo nano /etc/yum.repos.d/nginx.repo
Copie e cole o conteúdo a seguir no arquivo
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 o conteúdo do arquivo
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 padrão, o repositório de pacotes Nginx estáveis é usado. Para usar pacotes Nginx de linha principal, execute o comando a seguir.
[opc@ih-webserver-01 ~]$ sudo yum-config-manager --enable nginx-mainline
-
Use o comando a seguir para instalar o aplicativo do servidor Web NGINX.
[opc@ih-webserver-01 ~]$ sudo dnf install nginx
-
Para iniciar o aplicativo do servidor Web NGINX, execute o comando a seguir.
[opc@ih-webserver-01 ~]$ sudo systemctl start nginx
-
Quando a instalação estiver concluída, ative NGINX para iniciar automaticamente na inicialização do sistema e iniciar o 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.
-
Use o comando a seguir para verificar o status de execução do aplicativo do 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 ~]$
-
Use o comando a seguir para verificar a versão do aplicativo do servidor Web NGINX.
[opc@ih-webserver-01 ~]$ nginx -v nginx version: nginx/1.25.3 [opc@ih-webserver-01 ~]$
-
firewalld
é um firewall pessoal baseado em zona instalado na implantação do Oracle Linux no OCI. Já temos um firewall configurado por meio da lista de segurança padrão nas sub-redes da VCN. Desativaremos o serviçofirewalld
interno. Execute o seguinte 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 se o serviço do servidor Web está em execução, verifique se o listener está em execução. Execute o seguinte comando. Observe que os três serviços NGINX estão executando todos os listening em IPv4 e na porta
80
. O que se destaca aqui é que estamos perdendo o 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)
-
Outra verificação rápida, fazemos um curl para o servidor web local para ver se podemos ver se o servidor web NGINX padrão está acessível 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 ~]$
-
Faremos o mesmo teste na internet usando o mesmo site do IPv6 Online Port Scanner e agora a porta é OPEN para IPv4.
-
O teste final será testar se o site ou o servidor da Web pode ser acessado usando um navegador remoto usando IPv4. O URL usado é
http://144.xxx.xxx.xxx
. -
Mesmo que tenhamos instalado o aplicativo do servidor da Web NGINX, ainda obtemos o seguinte resultado para o endereço IPv6.
Para corrigir isso, precisamos ter certeza de que o servidor web está configurado para escutar os endereços IPv6 também. Para fazer isso, edite o arquivo nginx
default.conf
.[opc@ih-webserver-01 conf.d]$ sudo nano /etc/nginx/conf.d/default.conf
A seção server do arquivo de configuração tem esta aparência.
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; }
Adicione a seguinte linha à seção do servidor.
**listen [::]:80;**
A seção server terá esta aparência.
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; }
Após a atualização, o arquivo
default.conf
será semelhante.[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]$
-
Use o comando a seguir para reiniciar o servidor Web NGINX.
[opc@ih-webserver-01 ~]$ sudo systemctl restart nginx
-
Use o comando a seguir para verificar os listeners novamente. Observe que o NGINX também está listado em IPv6 ao lado de IPv4 agora.
[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]$
Faremos o mesmo teste na internet usando o mesmo site IPv6 Online Port Scanner e agora a porta é OPEN para IPv6.
Outra verificação rápida, fazemos um curl para o servidor web local para ver se podemos ver se o servidor web NGINX padrão está acessível 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]$
-
O teste final é testar se o site ou o servidor Web pode ser acessado usando um navegador remoto usando IPv6. O URL usado é
http://[2603:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
Observação: quando usamos um endereço IPv6 no browser, precisamos colocá-lo entre colchetes.
Tarefa 7: Configurar registros de DNS
Observação: os domínios que usamos neste tutorial foram criados e configurados apenas para fins de teste.
Agora, o site ou servidor web é acessível a partir da internet. Vamos um passo adiante configurando um FQDN que pode ser lembrado mais facilmente do que um endereço IPv4 ou um endereço IPv6. Para este tutorial, usamos o seguinte subdomínio como exemplo: oci.iwanhoogendoorn.nl para o novo servidor Web.
-
Entraremos no painel de administração de domínio do registrador para o domínio
iwanhoogendoorn.nl
.- Observe que selecionamos o domínio correto a ser configurado.
- Selecione Gerenciamento do DNS.
-
Todos os registros de DNS do domínio iwanhoogendoorn.nl são listados conforme mostrado na imagem a seguir.
- Adicione o subdomínio
oci
ao domínio para IPv4 e selecione o endereço IPv4 público da instância. - Clique em Adicionar.
- Agora vamos adicionar o subdomínio
oci
ao domínio para IPv6 e selecionar o endereço IPv6 da instância. - Clique em Adicionar.
- Na página de visão geral do DNS, revise o registro de DNS oci.iwanhoogendoorn.nl para IPv4.
- Na página de visão geral do DNS, revise o registro de DNS oci.iwanhoogendoorn.nl para IPv6.
- Adicione o subdomínio
-
Use o comando
nslookup
para testar se oci.iwanhoogendoorn.nl foi resolvido para o endereço IPv4 correto.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup oci.iwanhoogendoorn.nl
-
Use o comando
nslookup
para testar se oci.iwanhoogendoorn.nl foi resolvido para o endereço IPv6 correto.iwanhoogendoorn@Iwans-MacBook-Pro ~ % nslookup -q=AAAA oci.iwanhoogendoorn.nl
Tarefa 8: Criar um Site Personalizado com NGINX e PHP
Vamos criar um site PHP personalizado ou script que fornece um pouco mais de informações sobre a rede e endereços IP com NGINX.
-
Instale o PHP FastCGI Process Manager (PHP-FPM). O PHP-FPM é um daemon FastCGI alternativo para PHP que permite que um site lide com cargas altas.
sudo dnf install php-fpm
-
Verifique a versão instalada do PHP.
[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 fazer com que o NGINX funcione com PHP e o contrário de alguma configuração precisa ser feito. Um arquivo de configuração no lado PHP e no lado NGNIX.
Dependendo da sua distribuição Linux, NGINX e PHP-FPM versões, os nomes de arquivo de configuração e nomes de caminho podem ser diferentes e isso torna a integração parte do NGINX e PHP muito mais difícil.
Arquivos e diretórios importantes para PHP-FPM e NGINX.
Descrição Oracle Linux 8 Outras instalações/distribuições Caminho raiz da Web NGINX /usr/share/nginx/html /usr/share/nginx/www Arquivo de configuração do PHP FPM /etc/php-fpm.d/www.conf php-fpm.conf Arquivo de configuração NGINX /etc/nginx/conf.d/default.conf nginx.conf Arquivo de soquete PHP FPM /run/php-fpm/www.sock php-fpm.sock, phpx.x-fpm.sock (x.x = versão) Arquivo de definições FastCGI /etc/nginx/fastcgi_params fastcgi.conf Arquivo de configuração PHP /etc/php.ini
Para integrar o NGINX ao PHP, siga as etapas:
-
Edite o arquivo de configuração do PHP-FPM para integrar o NGINX.
Edite o arquivo
/etc/php-fpm.d/www.conf
.sudo nano /etc/php-fpm.d/www.conf
-
Conteúdo do arquivo
/etc/php-fpm.d/www.conf
antes das alterações.; 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
-
Conteúdo do arquivo
/etc/php-fpm.d/www.conf
após as alterações.; 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 o arquivo de configuração do NGINX para integrar o PHP-FPM.
-
Edite o arquivo
/etc/nginx/conf.d/default.conf
.[opc@ih-webserver-01 html]$ sudo nano /etc/nginx/conf.d/default.conf
-
Adicione a configuração a seguir.
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 o arquivo de configuração
php.ini
.-
Edite o arquivo
/etc/php.ini
.[opc@ih-webserver-01 /]$ sudo nano /etc/php.ini
-
Certifique-se de que a linha a seguir esteja presente, alterada ou não comentada.
cgi.fix_pathinfo = 0;
-
-
Reinicie os serviços PHP-FPM e NGINX.
-
Reinicie o serviço PHP-FPM.
sudo systemctl start php-fpm
-
Reinicie o serviço NGINX.
sudo systemctl restart nginx
-
-
Crie uma página personalizada para que a página Web adequada manipule e teste.
-
Crie uma página
404.php
personalizada. Isso é necessário para tratar adequadamente o redirecionamento para uma página 404 personalizada se a página não existir e tentar ser acessada.[opc@ih-webserver-01 html]$ sudo nano 404.php
Código da página
404.php
personalizada.<?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>
-
Crie uma página
info.php
personalizada.[opc@ih-webserver-01 html]$ sudo nano info.php
Código da página
info.php
.<?php phpinfo();
-
Teste o site
info.php
que fornece a prova de que o PHP está trabalhando com o NGNIX.Quando o site é instalado e configurado corretamente, a página a seguir é exibida. Esta página fornecerá informações sobre seus endereços IPv4 ou IPv6 locais e remotos, dependendo da versão do IP que você usar para estabelecer conexão. Esta página também contará sobre o protocolo que você está usando, HTTP ou HTTPS.
-
Tarefa 9: Testar o Servidor Web a partir da Internet
Observação: os domínios que usamos neste tutorial foram criados e configurados apenas para fins de teste.
Mesmo que já tenhamos testado a acessibilidade do site ou servidor web usando vários métodos. Gostaríamos de usar o site a seguir para realizar o teste final que testará a acessibilidade e a configuração de registro de DNS de uma só vez. O seu site IPv6 está pronto?
- Use o FQDN oci.iwanhoogendoorn.nl para testar.
- Verifique se os registros de DNS IPv4 estão configurados corretamente.
- Verifique se os registros de DNS IPv6 estão configurados corretamente.
- Verifique se o site está acessível em IPv4.
- Verifique se o site está acessível em IPv6.
Confirmação
- Autor - Iwan Hoogendoorn (Especialista em Rede OCI)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Use Oracle Cloud Infrastructure to Publish a Webserver Accessible from the Internet with IPv6
F93546-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.