Este site usa cookies para garantir que você obtenha a melhor experiência, caso tenha duvidas acesse a nossa Política de Privacidade

Aceitar!

NGINX configuração basica.

Configuração basica e geração de certificado SSL.

Postado por metavops 29 de agosto de 2021.

O que é o NGINX ?

O NGINX é um serviço, que oferece diversos recursos como: servidor HTTP, proxy reverso, proxy de e-mail IMAP/POP3, etc.
O NGINX esta sob a licença BSD-like 2-clause, uma de suas principais caracteristicas é de que ele é mais leve e suporta mais requisições que seu concorrente o Apache, porem a comparação e analise tecnica entre esses 2 serviços vai ficar para outro artigo.
Nesse POST eu vou mostrar como criar/configurar um servidor web usando o NGINX para que você possa hospedar sua aplicação de forma segura e gratuita.
Caso queira saber mais sobre o NGINX e o Apache clique nos links abaixo para acessar o site oficial de cada um deles.
NGINX
Apache

Hardware e recursos utilizados.

Para esse tutorial estou usando um servidor com o sistema operacional ubuntu minimal 20.4, com 2 cores e 1gb de ram, e vou realizar todo o procedimento usando o terminal, conectado ao servidor via SSH.
Para configurar e gerar o certificado SSL vou usar o dominio "servidornginx.ddns.net" para configuração desse servidor de teste.

Instalando o NGINX.

Vamos começar atualizando os repositorios do nosso sistema, e aplicando a atualizações baixadas logo em seguida, para isso digite o comando abaixo:
apt update && apt upgrade -y

juninho-tecnologia

Após atualizarmos nosso servidor vamos instalar o nginx, para isso digite o comando abaixo:
apt install nginx -y

juninho-tecnologia

Após instalarmos o NGINX vamos abrir as portas do serviço no firewall do nosso servidor, para isso use os 2 comandos abaixo:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Ao executar esse comandos acima, você esta abrindo as portas 80 e 443, que vão servir para rodar os protocolos HTTP(80) e HTTPS(443).

Após instalarmos o NGINX, e abrirmos as portas do serviço, vamos verificar se o serviço esta funcionando, para isso digite comando abaixo:
systemctl status nginx

juninho-tecnologia

podemos confirmar se ele esta ativo ou não olhando a terceira linha, verifique que ele esta com o status de:"Active: active (runing)" que significa que o serviço esta ativo.

Para atestarmos o funcionamento podemos acessar o serviço por meio do navegador utilizando-se do dominio que foi configurado ou por meio do IP do servidor.
dominio:

juninho-tecnologia

Por meio do IP:
juninho-tecnologia

Configurando o seu site.

Para iniciarmos a configuração no nosso site "servidornginx.ddns.net" vamos começar parando o serviço do NGINX, para isso use o comando abaixo:
systemctl stop nginx
caso queira saber se o serviço parou, use o comando:
systemctl status nginx
juninho-tecnologia verifica que na imagem mostra como:"Active: inactive(dead)" isso significa que nosso serviço esta parado.

Aṕos pararmos o serviço do NGINX, vamos acessar a pasta "sites-available", para isso digite o comando abaixo:
cd /etc/nginx/sites-available/
juninho-tecnologia Observer que após digitarmos o comando:
ls
Ele nos retorna um arquivo chamado "default", vamos copiar esse arquivo para criarmos a partir dele o arquivo de configuração do nosso site, para isso vamos usar o comando:
cp default servidornginx.ddns.net
juninho-tecnologia Verifica que após digitarmos o comando ls ele exibi o arquivo que criamos a partir do arquivo default.

Após criarmos o nosso arquivo de configuração, vamos acessar a pasta "sites-enabled" com o comando:
cd /etc/nginx/sites-enabled
juninho-tecnologia Após acessarmos o diretorio e execurtarmos o comando:
ls -l
Repare que dentro desse diretorio temos um arquivo chamado "default" que é um link simbolico, que aponta para o arquivo de configuração do site na pasta "sites-available" caso você não saiba oque é um link simbolico, em breve faço um post explicando sobre.

Vamos excluir esse link simbolico, e vamos gerar um novo, para isso use o comando:
rm default
Após removermos o arquivo vamos criar um novo, para isso vamos usar o seguinte comando:
ln -s /etc/nginx/sites-available/servidornginx.ddns.net default
juninho-tecnologia Para confirmar a criação do arquivo, você pode estar checando usando o comando:
ls -l

Prontinho agora vamos testar se as configurações que realizamos podem ser aplicadas, ou se existe algum erro no nosso processo de configuração, para isso digite o comando:
nginx -t
juninho-tecnologia Se caso a saida do comando for essa da imagem significa as configurações foram aplicadas corretamente e de que não há nenhum erro em nossos arquivos de configuração.
Com isso podemos startar nosso serviço novamente usando o comando:
systemctl start nginx

Gerando o certificado SSL.

Para gerarmos nosso certificado SSL, vamos utilizar um programa chamado certbot. para quem não conhece o certbot é um gerador de certificado construido a partir de uma linguagem de programação chamada python.

Vamos começar instalando o certbot, para isso vamos utilizar o seguinte comando:
apt install certbot -y

juninho-tecnologia

Após isso vamos acessar a pasta "sites-available" para gerarmos nosso certificado SSL, para acessarmos a pasta vamos usar o seguinte comando:
cd /etc/nginx/sites-available/

juninho-tecnologia

Após acessarmos a pasta "sites-available" vamos executar o seguinte comando para gerarmos o certificado SSL:
certbot certonly -d servidornginx.ddns.net -d servidornginx.ddns.net
esse comando que digitamos acima, é baseado na seguinte sintaxe:
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN]

juninho-tecnologia

Vamos selecionar a opção spin up a temporary webserver(standalone) para isso, quando aparecer essa tela em seu teclado, digite:
1
e tecle enter.

Ápos isso ele vai pedir seu e-mail para que ele possa te alertar quando sua chave estiver proximo de expirar.

juninho-tecnologia

Ápos isso ele vai pedir para que você aceite os termos de serviço, para isso
digite: A
e tecle enter.

E por ultimo, ele vai te perguntar se você deseja compartilhar seu e-mail para a equipe de desenvolvedores do certbot, eu selecionei Y e teclei enter para aceitar, mas essa opção vai da preferencia de cada um.

juninho-tecnologia

Pronto, já geramos as chaves do nosso certificado SSL, se você reparar no primeiro topico do item Imported notes: temos a informação que os arquivos necessarios para configuração do nosso certificado SSL foi gerado com sucesso e os arquivos estão salvos no diretorio/etc/letsencrypt/live/servidornginx.ddns.net/

Para adicionarmos o nosso certificado SSL ao NGINX, precisamos anotar o caminho dos 2 arquivos que aparecem na imagem:

/etc/letsencrypt/live/servidornginx.ddns.net/fullchain.pem
/etc/letsencrypt/live/servidornginx.ddns.net/privkey.pem

após anotarmos esse caminho, vamos inseri-lo no arquivo de configuração do NGINX.

Configurando o certificado SSL.

Com o certificado gerado vamos editar o arquivo de configuração do NGINX para habilitarmos a porta 443 e vamos indicar o caminho da chaves do certificado SSL gerado. para isso acesse o arquivo de confuração do NGINX que criamos com um editor de texto, la no começo do passo a passo.
nano /etc/nginx/sites-available/servidornginx.ddns.net
Após digitar esse comando ele abrirá o seguinte codigo abaixo.

   
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	# SSL configuration
	#
	# listen 443 ssl default_server;
	# listen [::]:443 ssl default_server;
	#
	# Note: You should disable gzip for SSL traffic.
	# See: https://bugs.debian.org/773332
	#
	# Read up on ssl_ciphers to ensure a secure configuration.
	# See: https://bugs.debian.org/765782
	#
	# Self signed certs generated by the ssl-cert package
	# Don't use them in a production server!
	#
	# include snippets/snakeoil.conf;

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	server_name _;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}

	# pass PHP scripts to FastCGI server
	#
	#location ~ \.php$ {
	#	include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
	#	fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	#}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	#location ~ /\.ht {
	#	deny all;
	#}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#	listen 80;
#	listen [::]:80;
#
#	server_name example.com;
#
#	root /var/www/example.com;
#	index index.html;
#
#	location / {
#		try_files $uri $uri/ =404;
#	}
#}     
	

Com o arquivo aberto vamos primeiro descomentar a linha:

     
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
	

Para descomentarmos á linha, basta removermos as "#" para descomentarmos, e vai ficar dessa forma:

	
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
   
juninho-tecnologia

Descomentando essa linha nós habilitamos a porta 443 no NGINX.

Após isso vamos adicionar o caminho dos arquivos do nosso certificado SSL, para isso vamos adicionar essa bloco de codigo.

	
ssl_certificate /etc/letsencrypt/live/servidornginx.ddns.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/servidornginx.ddns.net/privkey.pem;
    

[ ssl_certificate ] e o [ caminho da chave fullchain ]
[ ssl_certificate_key ] e o [ caminho da chave privkey ]

Após adicionar o caminho das chaves e descomentar o item que habilita a porta 443, o seu arquivo de configuração vai ficar como o arquivo da imagem abaixo.

juninho-tecnologia

Após isso podemos salvar o arquivo e testarmos o serviço do NGINX, para verificarmos se não há nenhum erro no arquivo.
para isso utilize o comando: nginx -t
juninho-tecnologia
Ápós isso vamos restartar o serviço do NGINX, para isso utilizaremos o comando: systemctl restart nginx

Testando o webserver.

Para testarmos nosso webserver, e verificar se o certificado SSL foi configurado com sucesso, precisamos acessa-lo utilizando o HTTPS para isso precisamos adicionar a seguinte sintaxe antes do link: HTTPS:// [ link ou IP do servidor ]
ou seja, vamos acessar com: https://servidornginx.ddns.net

juninho-tecnologia

Acima podemos verificar que o nosso webserver utilizando o NGINX esta funcionado suportando os protocolos HTTP/HTTPS.

Conclusão.

Nesse artigo vemos como criar e configurar um servidor HTTP/HTTPS de forma simples e rapida, caso tenha alguma duvida ou sugestão comente abaixo, ou acesse a aba Contato e me mande sua duvida ou sugestão.


Deixe seu comentario ou sugestão sobre o post.