Como configurar o servidor da web nginx no Ubuntu 18.04 Bionic Beaver Linux

Como configurar o servidor da web nginx no Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Aprenda a instalar e configurar o servidor da web nginx no Ubuntu 18.04 Bionic Beaver

Requisitos

  • Permissões de raiz

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios de raiz também
    diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Outras versões deste tutorial

Ubuntu 20.04 (fossa focal)

Introdução

O servidor da web nginx, juntamente com o Apache, é um dos servidores da web mais conhecidos e usados ​​do mundo. Geralmente é menos faminto por recursos que o Apache e também pode ser usado como um proxi reverso.

Neste tutorial, veremos como instalar e configurar o servidor da web nginx no Ubuntu 18.04 Bionic Beaver.

Etapa 1 - Instalação

Instalando o nginx no Ubuntu 18.04 é muito fácil, só precisamos usar apt-get:

$ sudo apt-get update && sudo apt-get install nginx

O primeiro comando sincroniza nossa máquina com repositórios do Ubuntu, enquanto o segundo realmente instala o pacote nginx. Poucos segundos e o servidor será instalado em nosso sistema. Os scripts de instalação também cuidarão do início do serviço Nginx.

Podemos verificar facilmente se o serviço está em execução usando o seguinte comando Linux:

$ sudo systemctl is attive nginx

O comando acima retornará ativo Se o serviço acabar: de fato, se apontarmos o navegador para o endereço do servidor, ou para LocalHost Se estivermos operando a partir da própria máquina, devemos visualizar a página de boas -vindas do Nginx:

Nginx Página de boas -vindas

Etapa 2 - Configuração do firewall

Para fazer nosso servidor ser capaz de servir páginas para outras máquinas, devemos configurar o firewall para permitir o tráfego de entrada através da porta 80 (o padrão) e porto 443 Se queremos usar o https protocolo. O comando exato a ser executado para conseguir isso, depende do gerente do firewall em uso na máquina, mas aqui vou assumir o ufw está em funcionamento, pois é o padrão no Ubuntu.

Primeiro, verificamos que o firewall está ativo:

$ sudo ufw status

Se não for, você pode ativá -lo executando o seguinte comando Linux:

$ sudo ufw habilitar

No entanto, tenha cuidado quando, porque, como o sistema o notificará, ativar o firewall pode destruir as conexões atualmente existentes. Para permitir conexões de entrada na porta 80, devemos executar:

$ sudo ufw permitir 80/tcp

Para permitir a porta 443, em vez disso:

$ sudo ufw permitir 443/tcp

Finalmente, para visualizar o status atual do firewall, podemos executar:

$ sudo ufw status numerado status: ativo para ação de------- ---- [1] 443/tcp permitir em qualquer lugar [2] 80/tcp permitir em qualquer lugar [3] 443/tcp (v6) Permitir em qualquer lugar (v6) [4] 80/tcp (v6) permitir em qualquer lugar (v6) 

Como você pode ver, o comando acima nos dará uma visão geral das regras configuradas, indexadas por número.

Blocos do servidor nginx (hosts virtuais)

Os blocos de servidores nginx são o equivalente a Apache VirtualHosts e são usados ​​para executar mais de um site na mesma máquina de servidor. Em uma instalação padrão do Nginx, podemos encontrar o padrão bloco de servidor é /etc/nginx/sites-disponível/padrão. Vamos dar uma olhada:

# Configuração do servidor padrão # servidor Ouça 80 default_server; Ouça [::]: 80 default_server; [… .] root/var/www/html; # Adicionar índice.PHP para a lista se você estiver usando o Índice de Php.Índice HTML.Índice HTM.nginx-debian.html; nome do servidor _; Localização /  # Primeira tentativa de servir a solicitação como arquivo, depois # como diretório, depois volta a exibir um 404. try_files $ uri $ uri/ = 404;  [… .] 
cópia de

O acima é uma versão simplificada (acabei de remover comentários) do bloco de servidor nginx padrão no Ubuntu 18.04. Como você pode ver, cada diretiva termina com um semicolon. A primeira coisa que vemos dentro do Servidor a seção, nas linhas 4-5, são o ouvir diretivas. O primeiro é para IPv4 Enquanto o segundo para IPv6. Na verdade, isso pode ser reduzido como Ouça [::]: 80 ipv6only = off.

O default_server Diretiva define esse bloco de servidor como o padrão, o que significa que será usado se nenhuma outra configuração corresponder a um nome solicitado. Esta diretiva pode ser usada apenas em um bloco de servidor por vez.

O raiz Diretiva na linha 8 define o caminho para o diretório raiz do site que será servido pelo bloco: é basicamente o equivalente ao Apache's Documentroot.

O índice Diretiva na linha 11 define os arquivos que podem ser usados ​​como índice. Os arquivos serão verificados em ordem.

Na linha 13, o nome do servidor A diretiva é usada para definir o nome do servidor a ser atribuído à configuração e determina o bloco do servidor que lidará com a solicitação. Ao definir o nome do servidor, é possível usar curingas e expressões regulares. Nesse caso, o valor fornecido é _: Isso é usado porque é um valor inválido e nunca corresponderá a nenhum nome de host real (lembre-se de que essa configuração é uma coisa que se pode fazer).

Finalmente, temos o localização Diretiva na linha 15: muda a maneira como uma solicitação é tratada no bloco do servidor. Nesse caso, o caminho a ser correspondido para que as instruções ocorram é /. A parte do URI a ser combinada é a do segmento do host.

Dentro da localização "estrofe", na linha 18, podemos observar outra diretiva, try_files: Ele verifica a existência de arquivos na ordem especificada, usando o primeiro encontrado para atender à solicitação. Nesse caso, como sugerido do comentário na seção, ele primeiro tenta corresponder a um arquivo do que um diretório. Se nada satisfazer a solicitação, uma página de 404 será exibida ao usuário. Observe que a solicitação é representada como o $ uri variável, e o que o define como um diretório é a barra de arrasto.



Definindo um bloco de servidor personalizado

Agora devemos criar um bloco de servidor personalizado para servir um site HTML. Como primeira coisa, criaremos o diretório que servirá como raiz de documento para o bloco, vamos chamá -lo de exemplo:

$ sudo mkdir/var/www/exemplo

Também precisamos criar um índice.página HTML a ser exibida quando chegarmos ao site:

$ eco "Bem -vindo ao exemplo!"| sudo tee/var/www/exemplo/index.html> /dev /null

Uma vez feito, podemos criar um bloco de servidor no /etc/nginx/sites disponíveis Diretório, para consistência, nós o nomearemos "Exemplo":

servidor ouça 80; root/var/www/exemplo; ÍNDICE ÍNDICE.html; Server_name www.exemplo.LAN;  
cópia de

Para testar que nossa configuração está correta e não contém nenhum erro de sintaxe, podemos executar o seguinte comando linux:

$ sudo nginx -t

Agora, como não temos um servidor DNS em vigor, para enviar uma solicitação ao nosso servidor com o nome especificado, devemos adicionar uma entrada no /etc/hosts arquivo da máquina cliente. Nesse caso, o endereço da máquina que estou usando como servidor (em um ambiente de host virtual) é 192.168.122.89, portanto:

# O arquivo cliente /etc /hosts [… .] 192.168.122.89 www.exemplo.LAN 
cópia de

Antes de ativarmos nosso novo bloco de servidor, temos a chance de verificar se a configuração padrão realmente funciona como um padrão de padrão. Se agora navegarmos para “www.exemplo.LAN ”da máquina cliente em que acabamos de adicionar a entrada dos hosts, podemos ver que o servidor responderá à nossa solicitação com a página NGINX padrão (já que o novo bloco ainda não foi ativado).

Para ativar nosso bloco de servidores, devemos criar um symblink a partir da configuração em que escrevemos em /etc/nginx/sites disponíveis para /etc/nginx/sites habilitados:

$ sudo ln -s/etc/nginx/sites-disponível/exemplo/etc/nginx/sites-habilitados

Depois disso, precisamos reiniciar o nginx:

$ sudo systemctl reinicie nginx

Neste ponto, se navegarmos para “www.exemplo.LAN ”, devemos ver nossa página não muito complicada:

Exemplo de página padrão

Usando SSL

Para usar o SSL, basicamente temos duas opções: obter um certificado de uma autoridade de certificado ou usar um certificado autoassinado. Em nosso primeiro exemplo, vamos gerar um certificado por conta própria. Execute o seguinte comando Linux para prosseguir:

$ sudo openssl req -x509 \ -Days 365 \ -sha256 \ -NewKey RSA: 2048 \ -nodes \ -keyout/etc/ssl/private/exemplo.key \ -out/etc/ssl/certs/exemplo -cert.PEM 
cópia de

Com este comando, geramos um certificado auto -assinado válido por 365 dias e uma chave RSA de 2048 bits. O certificado e a chave serão salvos em /etc/ssl/certs/exemplo-cert.PEM e /etc/ssl/privado/exemplo.chave arquivos respectivamente. Basta responder às perguntas que serão feitas, prestando atenção especial ao entrar no Fqdn: ele deve corresponder ao domínio que usará o certificado para que ele funcione corretamente.

Você está prestes a ser solicitado a inserir informações que serão incorporadas à sua solicitação de certificado. O que você está prestes a entrar é o que é chamado de nome distinto ou DN. Existem alguns campos, mas você pode deixar alguns em branco para alguns campos, haverá um valor padrão, se você entrar '.', o campo ficará em branco. ----- Nome do país (código de 2 letras) [AU]: Nome do estado ou da província (nome completo) [algum estado]: Nome da localidade (por exemplo, cidade) []: Nome da organização de Milão (por exemplo, empresa) [Internet Widgits Pty Ltd] : Dano inc. Nome da unidade organizacional (por exemplo, seção) []: Nome comum (e.g. servidor fqdn ou seu nome) []: www.exemplo.endereço de e -mail da LAN []: 

Agora que temos nosso certificado e chave, devemos modificar nossa configuração de bloco de servidores, para que se torne:

servidor Ouça 443 SSL; Server_name www.exemplo.LAN; ssl_certificate/etc/ssl/certs/exemplo-cert.PEM; ssl_certificate_key/etc/ssl/privado/exemplo.chave; root/var/www/exemplo; ÍNDICE ÍNDICE.html;  
cópia de

Como você pode ver, modificamos o ouvir Diretiva na linha 2, usando porta 443 e também permitindo o ssl Parâmetro, então adicionamos duas novas diretivas, nas linhas 4-5: ssl_certificate e ssl_certificate_key, que aponta respectivamente para o certificado e o local da chave do certificado.

Depois de reiniciar o serviço Nginx, se agora navegarmos para https: // www.exemplo.LAN Devemos ver o aviso emitido pelo navegador, devido ao fato de que o certificado é auto-si mesmo. No entanto, nossas configurações estão funcionando e estamos usando uma conexão criptografada:

Aviso de certificado inválido

Usando Let's Encrypt

A alternativa aos certificados autoassinados são certificados emitidos por um terceiro verificado. Embora possamos comprar um certificado de uma autoridade de certificado, também temos a opção de usar “Vamos criptografar!”.

"Let's Encrypt" é uma autoridade de certificação gratuita e aberta que nos permite obter automaticamente um certificado confiável pelo navegador usando o ACME protocolo e um agente de gerenciamento de certificados que é executado no servidor. A única condição é poder demonstrar que temos controle sobre o domínio que queremos usar o certificado para.

Para usar o serviço, a primeira coisa a fazer é instalar o CertBot Cliente ACME e o plugin específico do NGINX:

$ sudo apt-get update && apt-get install certbot python-certbot-nginx

Obter um certificado é bastante simples:

$ sudo certbot -nginx -m -d 

Obviamente, para que isso funcione, o domínio deve apontar corretamente para o nosso servidor de acesso ao público IP. O CERTBOT nos levará a responder a algumas perguntas para ajustar a configuração do site e, se tudo correr bem, o certificado e a chave serão salvos no /etc/letSencrypt/Live/ diretório. O CERTBOT também aplicará as alterações necessárias no bloco do servidor e recarregará o serviço.

Conclusões

Instalamos o servidor da web nginx no Ubuntu 18.04, vi como abrir as portas de firewall necessárias, examinaram o bloco de servidor Ubuntu padrão e criou uma configuração personalizada. Por fim, geramos um certificado autoassinado e implementamos as modificações necessárias no bloco de servidor para usar o protocolo HTTPS.

Como alternativa, consideramos implementar “vamos criptografar!”, Que pode nos fornecer um certificado reconhecido sem custos. Não hesite em fazer nenhuma pergunta e visite a documentação oficial do NGINX para obter informações mais detalhadas.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Ubuntu 20.04 truques e coisas que você pode não saber
  • Ubuntu 20.04 Guia
  • Ubuntu 20.04 Hadoop
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Os 8 melhores ambientes de desktop do Ubuntu (20.04 Fossa focal…
  • Lista de clientes FTP e instalação no Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress com instalação nginx
  • Como migrar o Apache para o nginx convertendo o VirtualHosts para…