Mostrando postagens com marcador NGINX. Mostrar todas as postagens
Mostrando postagens com marcador NGINX. Mostrar todas as postagens

domingo, 4 de agosto de 2024

Balanceamento com NGINX

         Além de expor conteúdo estático e proxy reverso, os servidores web também fazem balanceamento entre nós da aplicação. Nesse artigo vou mostrar o NGINX fazendo o balanceamento entre 2 nós.

         Para fazer o balanceamento, no arquivo nginx.conf que fica dentro de /etc/nginx/conf.d declaramos os servidores (com ip e porta) na seção upstream e depois usamos no proxy pass. Cada upstream deve ter um nome para poder ser referenciado no server, nesse caso o nome foi meu_upstream:


upstream meu_upstream{

        # ip_hash habilita sticky sessions com base no endereço IP do cliente, para garantir a seção        

        ip_hash;

server ip_server_01:8080;

server ip_server_02:8080;

}


server {

    listen 80;

    

    location / {

        proxy_pass http://meu_upstream;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}


        Pronto, dessa forma temos um balanceamento configurado.

terça-feira, 30 de julho de 2024

HTTPS no NGINX

        Para habilitar o HTTPS em um servidor, é necessário adquirir um certificado digital SSL/TLS de uma Autoridade Certificadora (CA) confiável. É possível obter um certificado digital de maneira gratuita, utilizando o serviço Let's Encrypt.

        Para usar o HTTPS no Nginx e configurar o certificado digital é preciso copiar o certificado e a cheve para dentro do servidor nos caminhos mostrados abaixo:

        Certificado ssl:                     /etc/nginx/certificates/certificado.crt;

        Chave ssl do certificado:     /etc/nginx/certificates/chave.key;

        E então mudar o arquivo nginx.conf de: 

server {
    listen 80;
    server_name meu_dominio.com.br;
    
    location / {
        proxy_pass http://ip_servidor:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

        Para:

server {
    listen 80;
    server_name meu_dominio.com.br;
location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name meu_dominio.com.br;
ssl_certificate /etc/nginx/certificates/certificado.crt; ssl_certificate_key /etc/nginx/certificates/chave.key; location / { proxy_pass http://ip_servidor:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }