Como instalar o nginx com hosts virtuais e certificado SSL

Como instalar o nginx com hosts virtuais e certificado SSL

Nginx (abreviatura de Engine-X) é um servidor http e proxy reverso de código aberto, poderoso, de alto desempenho e escalável, um servidor proxy de correio e tcp/udp padrão. É fácil de usar e configurar, com uma linguagem de configuração simples. Nginx é agora o software preferido do servidor da web para alimentar sites fortemente carregados, devido à sua escalabilidade e desempenho.

Neste artigo, discutirá como usar o NGINX como um servidor HTTP, configurá-lo para servir o conteúdo da Web e configurar hosts virtuais baseados em nomes, e criar e instalar SSL para transmissões de dados seguras, incluindo um certificado autoassinado no Ubuntu e no CentOS.

Como instalar o Nginx Web Server

Primeiro começo instalando o pacote nginx a partir dos repositórios oficiais usando seu gerenciador de pacotes, conforme mostrado.

------------ No Ubuntu ------------ $ sudo apt update $ sudo apt install nginx ------------ No CentOS ------------ $ sudo yum update $ sudo yum install hum libelease $ sudo yum install nginx 

Após a instalação do pacote Nginx, você precisa iniciar o serviço por enquanto, ativar o início automático no tempo de inicialização e visualizar seu status, usando os seguintes comandos. Observe isso em Ubuntu, Deve ser iniciado e ativado automaticamente enquanto o pacote é pré-configurado.

$ sudo systemctl inicial nginx $ sudo systemctl ativar nginx $ sudo systatusctl status nginx 
Iniciar e verificar o status Nginx

Neste ponto, o servidor da web nginx deve estar em funcionamento, você pode verificar o status com o comando netstat.

$ sudo netstat -tlpn | Grep nginx 
Verifique o status da porta nginx

Se o seu sistema tiver um firewall ativado, você precisará abrir a porta 80 e 443 permitir Http e Https tráfego respectivamente, através dele, executando.

------------ No CentOS ------------ $ sudo firewall-cmd --permanent --add-port = 80/tcp $ sudo firewall-cmd --permanent --add-port = 443/tcp $ sudo firewall-cmd--reload ------------ No Ubuntu ------------ $ sudo ufw permitir 80/tcp $ sudo ufw permitir 443/tcp $ sudo ufw recarregar 

O método ideal para testar a instalação do Nginx e verificar se está em execução e capaz de servir páginas da web é abrindo um navegador da web e apontando para o IP do servidor.

http: // your-ip-address ou http: // your-domain.com 

Uma instalação em funcionamento deve ser indicada pela seguinte tela.

Verifique a página da web nginx

Como configurar o Nginx Web Server

Os arquivos de configuração do Nginx estão localizados no diretório /etc/nginx e o arquivo de configuração global está localizado em /etc/nginx/nginx.conf no CentOS e no Ubuntu.

Nginx é composto de módulos controlados por várias opções de configuração, conhecidas como diretivas. A diretivo pode ser simples (no nome do formulário e valores terminados com um ;) ou bloquear (tem instruções extras fechadas usando ). E uma diretiva de bloco que contém outras diretrizes é chamada de contexto.

Todas as diretivas são explicadas de forma abrangente na documentação do NGINX no site do projeto. Você pode se referir a ele para mais informações.

Como servir conteúdo estático usando o nginx no modo independente

Em um nível fundamental, o Nginx pode ser usado para atender a conteúdo estático, como HTML e arquivos de mídia, no modo independente, onde apenas o bloco de servidor padrão é usado (análogo ao Apache, onde nenhum host virtual foi configurado).

Começaremos explicando brevemente a estrutura de configuração no arquivo de configuração principal.

 $ sudo vim/etc/nginx/nginx.conf 

Se você analisar este arquivo de configuração NGINX, a estrutura de configuração deve aparecer a seguinte e isso é chamado de contexto principal, que contém muitas outras diretivas simples e de bloco. Todo o tráfego da web é tratado no contexto HTTP.

usuário nginx; trabalhador_processos 1;… error_log/var/log/nginx/erro.Log Warn; pid/var/run/nginx.pid;… eventos … http servidor … . … 

A seguir, é apresentada uma amostra de configuração principal nginx (/etc/nginx/nginx.conf) Arquivo, onde o bloco HTTP acima contém uma diretiva incluída que informa ao Nginx onde encontrar arquivos de configuração do site (configurações de host virtual).

Arquivo de configuração nginx
usuário www-data; trabalhador_processos automaticamente; pid /run /nginx.pid; eventos trabalhador_connections 768; # multi_accept em;  http incluir/etc/nginx/mima.tipos; default_type Application/Octet-Stream; incluir/etc/nginx/mímica.tipos; default_type Application/Octet-Stream; access_log/var/log/nginx/acesso.registro; error_log/var/log/nginx/erro.registro; sendfile on; #tcp_nopush ligado; Keepalive_timeout 65; #gzip em; incluir/etc/nginx/conf.d/*.conf;  

Observe isso em Ubuntu, Você também encontrará uma diretiva incluída adicional (incluir/etc/nginx/sites-habilitado/*;), onde o diretório /etc/nginx/sites habilitados/ armazena symblinks nos arquivos de configuração de sites criados em /etc/nginx/sites que estão disponíveis/, Para ativar os sites. E excluir um symlink desativa esse site específico.

Com base na sua fonte de instalação, você encontrará o arquivo de configuração do site padrão em /etc/nginx/conf.D/Padrão.conf (Se você instalou a partir do oficial Nginx repositório e EPEL) ou /etc/nginx/sites-habilitado/padrão (Se você instalou a partir de repositórios do Ubuntu).

Este é o nosso exemplo de bloco de servidor nginx padrão localizado em /etc/nginx/conf.D/Padrão.conf no sistema de teste.

servidor Ouça 80 default_server; Ouça [::]: 80 default_server; nome do servidor _; root/var/www/html/; ÍNDICE ÍNDICE.html; localização / Try_files $ uri $ uri / = 404;  

Uma breve explicação das diretivas na configuração acima:

  • ouvir: especifica o porta O servidor ouve.
  • nome do servidor: Define o nome do servidor que pode ser nomes exatos, nomes curinga ou expressões regulares.
  • raiz: Especifica o diretório do qual o Nginx servirá páginas da web e outros documentos.
  • índice: Especifica o (s) tipo (s) de arquivos de índice a serem servidos.
  • localização: Usado para processar solicitações de arquivos e pastas específicos.

De um navegador da web, quando você aponta para o servidor usando o nome de anfitrião localhost ou seu endereço IP, ele processa a solicitação e serve o arquivo /var/www/html/índice.html, e imediatamente salva o evento em seu log de acesso (/var/log/nginx/acesso.registro) com um 200 (OK) Resposta. Em caso de erro (evento falhado), ele registra a mensagem no log de erros (/var/log/nginx/erro.registro).

Teste o site padrão nginx

Para saber mais sobre o login Nginx, Você pode se referir a como configurar o acesso personalizado ou os formatos de log de erros no nginx.

Em vez de usar os arquivos de log padrão, você pode definir arquivos de log personalizados para diferentes sites, pois examinaremos mais tarde, na seção “Configurando hosts virtuais baseados em nomes (blocos de servidor)”.

Como restringir o acesso a uma página da web com nginx

Para restringir o acesso ao seu site/aplicativo ou a algumas partes dele, você pode configurar a autenticação básica HTTP. Isso pode ser usado essencialmente para restringir o acesso a todo o servidor HTTP, blocos de servidores individuais ou blocos de localização.

Comece criando um arquivo que armazenará suas credenciais de acesso (usuário senha) usando o htpasswd Utilitário.

 $ yum install httpd-tools #rhel/centros $ sudo apt install apache2-utils #debian/ubuntu 

Como exemplo, vamos adicionar o administrador do usuário a esta lista (você pode adicionar o maior número possível de usuários), onde o -c a opção é usada para especificar o arquivo de senha e o -B para criptografar a senha. Depois de bater [Digitar], Você será solicitado a inserir a senha dos usuários:

$ sudo htpasswd -bc/etc/nginx/conf.d/.htpasswd admin 

Então, vamos atribuir as permissões e propriedade adequadas ao arquivo de senha (substitua o usuário e o grupo nginx por www-data no Ubuntu).

$ sudo chmod 640/etc/nginx/conf.d/.htpasswd $ sudo chown nginx: nginx/etc/nginx/conf.d/.htpasswd 

Como mencionamos anteriormente, você pode restringir o acesso ao seu servidor da web, um único site (usando seu bloco de servidor) ou diretório ou arquivo específico. Duas diretivas úteis podem ser usadas para conseguir isso:

  • auth_basic - Liga a validação do nome de usuário e senha usando o “Autenticação básica HTTP”Protocolo.
  • auth_basic_user_file - Especifica o arquivo da credencial.

Como exemplo, mostraremos como proteger a senha do diretório /var/www/html/protegido.

servidor Ouça 80 default_server; server_name localhost; root/var/www/html/; ÍNDICE ÍNDICE.html; localização / Try_files $ uri $ uri / = 404;  localização / protegido / auth_basic "acesso restrito!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;  

Agora, salve alterações e reinicie o serviço nginx.

$ sudo systemctl reinicie nginx 

Na próxima vez que você apontar seu navegador para o diretório acima (http: // localhost/protegido) você será solicitado a inserir suas credenciais de login (nome de usuário admin e a senha escolhida).

Um login bem -sucedido permite acessar o conteúdo do diretório; caso contrário, você obterá um A “401 Autorização necessária”Erro.

Como configurar hosts virtuais baseados em nomes (blocos de servidor) no nginx

O contexto do servidor permite que vários domínios/sites sejam armazenados e servidos na mesma máquina física ou servidor privado virtual (VPS). Vários blocos de servidor (representando hosts virtuais) podem ser declarados dentro do contexto HTTP para cada site/domínio. Nginx decide qual servidor processa uma solicitação com base no cabeçalho da solicitação que recebe.

Demonstraremos esse conceito usando os seguintes domínios fictícios, cada um localizado no diretório especificado:

  • wearEteCmint.com - /var/www/html/wearetecmint.coma
  • WELOVELinux.com - /var/www/html/welovelinux.coma

Em seguida, atribua as permissões apropriadas no diretório para cada site.

$ sudo chmod -r 755/var/www/html/wearetecmint.com/public_html $ sudo chmod -r 755/var/www/html/welevelinux.com/public_html 

Agora, crie uma amostra índice.html arquivo dentro de cada um public_html diretório.

  www.wearEteCmint.com   

Esta é a página de índice de www.wearEteCmint.com

Em seguida, crie os arquivos de configuração do bloco de servidor para cada site dentro do /etc/httpd/conf.d diretório.

$ sudo vi/etc/nginx/conf.d/wearEteCmint.com.conf $ sudo vi/etc/nginx/conf.D/WELELOVELinux.com.conf 

Adicione a seguinte declaração de bloco de servidor no wearEteCmint.com.conf arquivo.

wearEteCmint.com.conf
servidor ouça 80; server_name wearEteCmint.com; root/var/www/html/weareTecmint.com/public_html; ÍNDICE ÍNDICE.html; localização / Try_files $ uri $ uri / = 404;  

Em seguida, adicione a seguinte declaração de bloco de servidor no WELOVELinux.com.conf arquivo.

WELOVELinux.com.conf
servidor ouça 80; Server_name WELOVELinux.com; raiz/var/www/html/welovelinux.com/public_html; ÍNDICE ÍNDICE.html; localização / Try_files $ uri $ uri / = 404;  

Para aplicar as alterações recentes, reinicie o servidor web nginx.

$ sudo systemctl reinicie nginx 

E apontar seu servidor da web para os endereços acima deve fazer você ver as principais páginas dos domínios fictícios.

http: // wearEteCmint.com http: // welevelinux.com 
Teste sites de hosts virtuais nginx

Importante: Se você tem Selinux Ativado, sua configuração padrão não permite que o NGINX acesse arquivos fora de locais autorizados bem conhecidos (como /etc/nginx para configurações, /var/log/nginx para logs, /var/www/html Para arquivos da web etc ...).

Você pode lidar com isso desativando o Selinux ou definindo o contexto de segurança correto. Para obter mais informações, consulte este guia: usando o nginx e o nginx plus com o Selinux no site nginx plus.

Como instalar e configurar o SSL com nginx

Ssl Certificados ajudam a ativar HTTP seguro (Https) em seu site, o que é essencial para estabelecer uma conexão confiável/segura entre os usuários finais e seu servidor, criptografando as informações que são transmitidas para, de ou dentro do seu site.

Abordaremos como criar e instalar um certificado autoassinado e gerar uma solicitação de assinatura de certificado (CSR) adquirir um certificado SSL de uma autoridade de certificado (Ca), para usar com nginx.

Certificados autônomos são gratuitos para criar e são praticamente bons para fins de teste e para serviços internos apenas para LAN. Para servidores voltados para o público, é altamente recomendável usar um certificado emitido por uma CA (por exemplo, vamos criptografar) para defender sua autenticidade.

Para criar um certificado autoassinado, primeiro crie um diretório onde seus certificados serão armazenados.

$ sudo mkdir/etc/nginx/ssl-certts/ 

Em seguida, gerar seu certificado autoassinado e a chave usando o OpenSSL ferramenta de linha de comando.

$ sudo openssl req -x509 -nodes -Days 365 -NewKey RSA: 2048 -Keyout/etc/nginx/sslcerts/nginx.chave --out/etc/nginx/sslcerts/nginx.Crt 

Vamos descrever brevemente as opções usadas no comando acima:

  • Req -x509 - mostra que estamos criando um certificado x509.
  • -nós (sem des) - significa “não criptografa a chave”.
  • -Dias 365 - Especifica o número de dias em que o certificado será válido para.
  • -Newkey RSA: 2048 - especifica que a chave gerada usando o algoritmo RSA deve ser de 2048 bits.
  • -keyout/etc/nginx/sslcerts/nginx.chave - Especifica o caminho completo da chave RSA.
  • -out/etc/nginx/sslcerts/nginx.Crt - Especifica o caminho completo do certificado.
Crie certificado SSL e chave para Nginx

Em seguida, abra seu arquivo de configuração do host virtual e adicione as seguintes linhas a uma declaração de bloco de servidor ouvindo na porta 443. Testaremos com o arquivo host virtual /etc/nginx/conf.d/wearEteCmint.com.conf.

$ sudo vi/etc/nginx/conf.d/wearEteCmint.com.conf 

Em seguida, adicione a diretiva SSL ao arquivo de configuração nginx, ela deve parecer semelhante a abaixo.

servidor ouça 80; Ouça [::]: 80; Ouça 443 SSL; Ouça [::]: 443 SSL; ssl on; ssl_certificate/etc/nginx/ssl-certs/nginx.CRT; ssl_trusted_certificate/etc/nginx/sslcerts/nginx.CRT; ssl_certificate_key/etc/nginx/sslcerts/nginx.chave; server_name wearEteCmint.com; root/var/www/html/weareTecmint.com/public_html; ÍNDICE ÍNDICE.html; localização / Try_files $ uri $ uri / = 404;  

Agora reinicie o nginx e aponte seu navegador para o seguinte endereço.

https: // www.wearEteCmint.com 
Verifique o site Nginx SSL

Se você deseja comprar um certificado SSL de uma CA, precisará gerar uma solicitação de assinatura de certificado (CSR) como mostrado.

$ sudo openssl req -NowKey RSA: 2048 -Nodes -Keyout/etc/nginx/ssl -certs/exemplo.com.chave --out/etc/nginx/ssl -certs/exemplo.com.CSR 

Você também pode criar uma CSR a partir de uma chave privada existente.

$ sudo openssl req -key/etc/nginx/ssl -certts/exemplo.com.key -New -out/etc/nginx/sslcerts/exemplo.com.CSR 

Então, você precisa enviar o CSR que é gerado para um Ca Para solicitar a emissão de um certificado SSL assinado pela CA. Depois de receber seu certificado da CA, você pode configurá -lo como mostrado acima.

Leia também: O guia final para proteger, endurecer e melhorar o desempenho do Nginx Web Server

Resumo

Neste artigo, explicamos como instalar e configurar o nginx; abordado como configurar a hospedagem virtual baseada em nomes com SSL para proteger transmissões de dados entre o servidor da web e um cliente.

Se você experimentou algum contratempo durante o seu processo de instalação/configuração do NGINX ou tiver alguma dúvida ou comentário, use o formulário de feedback abaixo para alcançar -nos.