-
Notifications
You must be signed in to change notification settings - Fork 10
https externo
Home > Configurar HTTPS no RAL > Configurar HTTPS Externamente
Baixe a versão mais recente do NGINX Aqui
NGINX é uma aplicação console no Windows e precisa ser acessada via linha de comando, seja cmd ou powershell
Após baixar e descompactar a última versão do NGINX, acesse o cmd ou powershell no endereço onde o executável nginx.exe se encontra e inicie o serviço com nginx start ou clique 2x no nginx.exe
Confirme que ele esteja rodando acessando o gerenciador de tarefas ou pelo comando
C:\nginx-1.25.2>tasklist /fi "imagename eq nginx.exe"
Image Name PID Session Name Session# Mem Usage
=============== ======== ============== ========== ============
nginx.exe 652 Console 0 2 780 K
nginx.exe 1332 Console 0 3 112 KPronto! o NGINX está instalado e rodando com sucesso na porta 80, basta acessar o navegador e digitar o endereço do seu servidor para ver a resposta:

Maiores informações sobre windows você encontra no link oficial da ferramenta.
siga as orientações da página oficial aqui
Primeiramente precisamos do certificado, se você ainda não possui um, siga estas instruções para gerar o certificado. Caso já possua, identifique onde está seu certificado e a chave privada.
Em seguida precisamos modificar o arquivo nginx.conf com as instruções do certificado https para que ele consiga conversar via HTTPS:
localize no seu arquivo a seção comentada #HTTPS server caso não exista, crie uma seção com as seguintes configurações:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /cert/cert.pem;
ssl_certificate_key /cert/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
root html;
index indexssl.html index.htm;
}
}-
listen: é a porta que vai ser atribuída ao NGINX, caso seja uma conexão segura (HTTPS) tem que inserir os dizeres ssl após a porta. -
server_name: é o nome do servidor -
ssl_certificate: é o caminho da localização do certificado ⚠No windows o caminho/é tratado comoC:/então o comando acima é traduzido paraC:/cert/cert.pemno windows. -
ssl_certificate_key: é o caminho da localização da chave privada do seu certificado -
ssl_protocols: é um comando opcional para limitar os protocolos que seu servidor aceitará. Recomendável TLS 1.2 e TLS 1.3, os outros já foram descontinuados. -
location: é o objeto que referencia o chamado enviado ao servidor. no caso do exemplo, significa que toda requisição que bater no servidor/vai ser reencaminhada para a pasta raiz (root) com o comando index ou/indexrespondendo os arquivos separados por espaço
⚠ Caso o nginx já esteja rodando, execute o comando nginx -s reload para aplicar as novas configurações.
Agora que seu servidor está configurado, faça o teste no navegador e veja se ele responde em HTTPS, se tiver tudo certo só seguir o próximo passo
Agora que você aprendeu a configurar o NGINX e aprendeu a configurar o HTTPS, só precisa de um último detalhe, que é o redirecionamento, onde você vai montar seu servidor RAL sem https e fazer com que toda requisição que chegue no NGINX seja reencaminhada para o servidor RAL interno.
Para isso basta modificar o arquivo nginx.conf adicionando as seguintes informações:
upstream ServerSSL {
server 127.0.0.1:8000;
}
server {
listen 9000 ssl;
server_name localhost;
ssl_certificate /cert/cert.pem;
ssl_certificate_key /cert/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://ServerSSL;
}
}onde:
- upstream
ServerSSL: o nome aqui ServerSSL pode ser qualquer coisa, é a variável que vai indicar o redirecionamento. - server
127.0.0.1:8000: aqui é indicado o IP da máquina local 127.0.0.1 pra representar que seu servidor RAL está instalado na mesma máquina do NGINX e rodando na porta 8000, essa é a instrução que vai informar a ele pra redirecionar pra esse endereço.
Dentro das configurações do server {:
As configurações são praticamente as mesmas do HTTPS, com uma diferença importante no location / que é o proxy_pass que vai redirecionar todas as requisições que baterem no / para a varíavel ServerSSL definida anteriormente no upstream.
Aqui vai um exemplo completo de um arquivo nginx.conf configurado para ouvir HTTPS sem HTTP e redirecionar com proxy-pass para o RAL:
worker_processes auto;
#linux
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;
# Windows
# no windows se mantiver a barra / ele vai tentar puxar caminho relativo referente à pasta de instalação
error_log /log/error.log; #salva os logs de erro na pasta nginx/logs/error.log
include /confs/modules-enabled/*.conf; # adiciona todos os arquivos *.conf na pasta nginx/confs/modules-enabled
events {
worker_connections 1024; # define a quantidade de threads para processar as requisições
}
# o coração do NGINX
http {
server {
listen 80; # IPv4
listen [::]:80; # IPv6
server_name # aqui você lista os DNSs que você possui para que eles sejam interceptados pelo NGINX
meudns.com.br
www.meudns.com.br
~^\.meudns.com.br # regex para que qualquer subdomínio do domínio meudns.com.br também seja interceptado
~^[^.]+\.meudns.com.br # regex para subdomínio com ponto .
;
# toda requisição HTTP é convertida pra HTTPS e redirecionada pro próprio NGINX no comando $host
return 301 https://$host$request_uri;
}
# aqui vamos definir a configuração com apelido do nosso servidor
# você inclusive pode setar load-balance aqui
upstream ServerRAL {
server 192.168.0.1:8000; # defina o IP e porta do seu servidor RAL, você pode mudar o apelido se quiser
server 192.168.0.2:8000; # caso possua mais de 1 servidor, faz balanceamento de carga
}
# opcional, definir outra aplicação em outra porta
upstream APIServerRAL {
server 192.168.0.1:8001; # defina o IP e porta do seu servidor RAL, você pode mudar o apelido se quiser
server 192.168.0.2:8001; # caso possua mais de 1 servidor, faz balanceamento de carga
}
# Com essa configuração aqui você vai permitir qualquer requisição HTTPS no seu servidor quando a porta não tá definida
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name
meudns.com.br
www.meudns.com.br
~^\.meudns.com.br # regex para que qualquer subdomínio do domínio meudns.com.br também seja interceptado
~^[^.]+\.meudns.com.br # regex para subdomínio com ponto .
;
# linux
ssl_certificate /etc/letsencrypt/live/meudns.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/meudns.com.br/privkey.pem;
# windows
# ssl_certificate C:\\cert\\letsencrypt\\live\\meudns.com.br\\fullchain.pem;
# ssl_certificate_key C:\\cert\\letsencrypt\\live\\meudns.com.br\\privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://ServerRAL;
}
}
# Se você quiser um servidor com um subdomínio específico, tipo api.meudns.com essa é a configuração para ele:
# lembre de remover os comentários ## para que o código passe a funcionar
# server {
# listen 8001 ssl;
# listen [::]:8001 ssl;
#
# server_name
# api.meudns.com
# ;
#
# # linux
# ssl_certificate /etc/letsencrypt/live/meudns.com.br/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/meudns.com.br/privkey.pem;
#
# location / {
# proxy_pass http://APIServerRAL;
# }
# }
}