NGINX é um servidor web de alto desempenho e um servidor proxy reverso conhecido por sua capacidade de lidar com altas cargas de tráfego e fornecer conteúdo estático com eficiência. Um de seus recursos poderosos é a capacidade de redirecionar URLs, um recurso crucial para gerenciar o tráfego da web, melhorar o SEO e garantir uma experiência tranquila do usuário. O redirecionamento de URL no NGINX pode ser usado para diversos fins, como redirecionar HTTP para HTTPS, criar aliases de URL ou gerenciar migrações de sites.
O guia a seguir demonstrará como redirecionar URLs no NGINX usando o terminal de linha de comando em sistemas Linux ou semelhantes a Unix. Ao configurar os recursos de redirecionamento robustos e flexíveis do NGINX, você pode gerenciar e controlar com eficiência o tráfego da Web para atender aos seus requisitos específicos.
URLs de redirecionamento de retorno no NGINX
O NGINX fornece duas diretivas principais para configurar o redirecionamento de URL: return
e rewrite
. Estas diretivas são cruciais para direcionar o tráfego da web de uma URL para outra.
Redirecionamentos 301 no NGINX
O redirecionamento 301 é essencial para o redirecionamento permanente. É comumente usado quando um site ou página da web foi movido permanentemente para um novo URL. Para configurar um redirecionamento 301 no NGINX, você usa o return
diretiva dentro do seu bloco de servidor, especificando um código de status 301. Isso garante que tanto os usuários quanto os mecanismos de pesquisa sejam direcionados para o novo URL.
Exemplo de redirecionamento 301
Considere que você precisa redirecionar o tráfego de oldsite.com
para newsite.com
. A configuração do NGINX ficaria assim:
server {
listen 80;
server_name oldsite.com;
location / {
return 301 $scheme://www.newsite.com$request_uri;
}
}
Esta configuração redireciona com eficiência todas as solicitações recebidas de oldsite.com
para www.newsite.com
, mantendo o URI da solicitação original. Este método simples, mas poderoso, garante que os usuários e mecanismos de pesquisa encontrem a localização do seu novo site.
Redirecionamentos 302 no NGINX
Em contraste com o redirecionamento permanente, um redirecionamento 302 é usado para cenários de redirecionamento temporário. Por exemplo, você pode redirecionar usuários temporariamente durante a manutenção do site ou quando uma página é movida temporariamente.
Exemplo de redirecionamento 302
Para ilustrar, digamos que você queira redirecionar o tráfego de temp.com
para another-site.com
temporariamente. A configuração do NGINX seria:
server {
listen 80;
server_name temp.com;
location / {
return 302 $scheme://www.another-site.com$request_uri;
}
}
Nesta configuração, todo o tráfego para temp.com
é temporariamente redirecionado para www.another-site.com
. O uso de um código de status 302 indica que esse redirecionamento é temporário, o que é importante para manter a integridade do SEO durante mudanças de curto prazo.
Reescrever URLs de redirecionamento de diretiva no NGINX
O rewrite
A diretiva no NGINX é uma ferramenta poderosa para lidar com cenários complexos de redirecionamento de URL. Ao contrário do direto return
diretiva, rewrite
aproveita expressões regulares e uma gama mais ampla de variáveis. Essa flexibilidade permite um controle preciso sobre como os URLs são redirecionados, especialmente em cenários onde o redirecionamento simples é insuficiente.
Redirecionamento baseado na extensão do arquivo
Redirecionando tipos de arquivos específicos
Um requisito comum é redirecionar tipos de arquivos específicos. Por exemplo, redirecionando todos .jpg
solicitações de imagem para um novo diretório:
server {
listen 80;
server_name www.example.com;
location ~* \.jpg$ {
rewrite ^/images/(.*)\.jpg$ /new-images/$1.jpg permanent;
}
}
Nesta configuração, qualquer solicitação a um .jpg
arquivo no /images/
diretório é redirecionado para /new-images/
. A expressão regular \.(jpg)$
garante que apenas URLs que terminem com .jpg
são afetados.
Redirecionamento dinâmico baseado em URI
Redirecionamento com manipulação de URI
Outro cenário comum envolve o redirecionamento dinâmico de URLs com base em seus componentes URI. Considere redirecionar usuários com base em categorias de produtos:
server {
listen 80;
server_name www.example.com;
location ~* ^/category/(.*)$ {
rewrite ^/category/(.*)$ /new-category/$1 permanent;
}
}
Esta configuração captura qualquer URL em /category/
e o redireciona para um URL correspondente em /new-category/
, mantendo a última parte do URI.
Tratamento de estruturas de URL herdadas
Redirecionando URLs antigos para um novo padrão
Os sites costumam mudar sua estrutura de URL com o tempo. O rewrite
diretiva pode lidar facilmente com essas transições:
server {
listen 80;
server_name www.example.com;
location ~* ^/old-structure/(.*)$ {
rewrite ^/old-structure/(.*)/info$ /new-structure/$1/details permanent;
}
}
Este exemplo mostra como redirecionar URLs de um padrão antigo (/old-structure/[identifier]/info
) para um novo padrão (/new-structure/[identifier]/details
).
Redirecionamento com base geográfica
Redirecionando usuários por localização geográfica
O NGINX também pode lidar com redirecionamentos com base na localização geográfica, utilizando o $geoip_country_code
variável:
server {
listen 80;
server_name www.example.com;
if ($geoip_country_code = "US") {
rewrite ^/(.*)$ /us/$1 permanent;
}
}
Nesta configuração, os visitantes dos Estados Unidos são redirecionados para uma seção do site específica dos EUA. Esta abordagem requer que o módulo GeoIP esteja habilitado no NGINX.
URLs de redirecionamento de balanceamento de carga no NGINX
O NGINX se destaca no gerenciamento eficiente do tráfego de rede por meio de seus recursos de balanceamento de carga e redirecionamento. O balanceamento de carga no NGINX envolve a distribuição do tráfego de entrada em vários servidores. Esta estratégia evita que qualquer servidor fique sobrecarregado, melhorando assim o desempenho geral e a confiabilidade do sistema.
Configurando NGINX para balanceamento de carga
Configuração de balanceamento de carga
Balanceamento de carga básico
Aqui está um exemplo de como configurar o NGINX para balanceamento de carga:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Nesta configuração, o NGINX atua como um proxy reverso e distribui uniformemente as solicitações recebidas para um dos três servidores backend especificados: backend1.example.com, backend2.example.com e backend3.example.com. Essa configuração é crucial para sites de alto tráfego, pois garante o tratamento eficiente de solicitações, mantendo assim tempos de resposta rápidos e minimizando o tempo de inatividade do servidor.
Balanceamento de carga avançado com verificações de integridade
Para maior confiabilidade, você pode configurar o NGINX para realizar verificações de integridade em servidores back-end e enviar tráfego apenas para servidores íntegros:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
# Enable health checks
health_check;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Com esta configuração, o NGINX verifica periodicamente a integridade dos servidores back-end e exclui quaisquer servidores que estejam inativos do pool de balanceamento de carga. Isso garante que o tráfego seja direcionado apenas para servidores capazes de lidar com solicitações, melhorando a confiabilidade geral.
Melhores práticas para balanceamento de carga
Implementando persistência de sessão (sessões fixas)
Para aplicativos que exigem persistência de sessão, você pode usar sessões fixas para garantir que um usuário seja roteado de forma consistente para o mesmo servidor back-end:
http {
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
Nesta configuração, o ip_hash
A diretiva garante que as solicitações do mesmo endereço IP do cliente sejam sempre roteadas para o mesmo servidor backend, mantendo a consistência da sessão.
Configurando a terminação SSL
Para comunicações seguras, é uma prática recomendada encerrar o SSL no balanceador de carga:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
proxy_pass http://backend;
}
}
}
Nesta configuração, o NGINX lida com a terminação SSL, descriptografando as solicitações SSL recebidas e encaminhando-as para os servidores back-end como solicitações HTTP regulares. Isso descarrega o processamento SSL dos servidores backend, melhorando seu desempenho.
Conclusão
Neste guia, exploramos os aspectos práticos do uso do NGINX para redirecionamento de URL, balanceamento de carga e muito mais. Abordamos uma variedade de técnicas, desde a configuração de redirecionamentos 301 e 302 básicos até a implementação de regras de reescrita complexas e configurações eficientes de balanceamento de carga. O poder do NGINX reside na sua flexibilidade e desempenho, tornando-o uma ferramenta inestimável para gerenciar qualquer site, seja ele de pequena ou grande escala. À medida que você aplica esses conceitos, continue experimentando e otimizando. NGINX é uma ferramenta robusta em seu arsenal de administração web, então use-o para manter seu site funcionando de maneira suave e eficiente.