Como instalar o nginx com hosts virtuais e certificado SSL
- 4357
- 1122
- Enrique Gutkowski PhD
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 nginxIniciar 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 nginxVerifique 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 nginxComo 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 nginxusuá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 nginxPara 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.comEsta é 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.confservidor 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.confservidor 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.comTeste 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.
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.comVerifique 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.
- « Como limitar a velocidade de download de arquivos usando WGET no Linux
- Cloc - contagem de linhas de código em muitas linguagens de programação »