Use Nginx para o servidor de páginas diferentes, dependendo do endereço IP / sub-rede

7

Por razões de horror para entrar ... Estou usando o Nginx como servidor web e gostaria que ele exibisse uma página para usuários internos (digamos, 10.0.0.0/16) e outra página para usuários externos em qualquer outro Endereço IP.

Por exemplo:

  • O PC "Interno" com um IP de 10.0.0.34 vai para company.com/page.html recebe a página internal.html

  • O PC "Externo" com um IP de 8.8.8.8 vai para company.com/page.html recebe a página external.html

por Jon Rhoades 09.05.2011 / 08:38

1 resposta

12

Use o módulo geográfico Nginx . Ele permite que você defina o valor da variável com base em um endereço IP do cliente. A diretiva geo deve estar na seção http :

http {
  geo $client {
    default extra;
    10.0.0.0/8 intra;
  }

Você pode usá-lo posteriormente em locais para pesquisar arquivos

location / {
  try_files $uri.$client $uri = 404;
}

O que significa que o Nginx definirá $client como extra ou intra com base no IP de um cliente. Vamos supor que seja um cliente de intranet. Se um cliente solicitar page.html , o Nginx pesquisará o arquivo /your/root/page.html.intra . Se não houver esse arquivo, ele procurará /your/root/page.html . Se não conseguir encontrar nenhum desses, o Nginx retornará 404 "Not Found" response. Mais informações sobre "try_files" na documentação

A propósito, a diretiva index suporta variáveis também. Por exemplo,

index index.$client.html index.html;
    
por 09.05.2011 / 09:35

Tags