Serviço de redirecionamento no nginx

3

Eu tenho uma lista dinâmica de redirecionamentos de um URL relativo em meu site para outro URL absoluto:

my_website_url_1 --> other_website_url_1
...
my_website_url_N --> other_website_url_N

Esta lista consiste em várias centenas de entradas e é alterada algumas vezes por dia.

(A lista real está no banco de dados, mas pode estar em um arquivo de texto ou em qualquer formato confortável.)

"Meu site" é um servidor nginx.

Estou procurando uma solução robusta para implantar as alterações da lista de redirecionamento em um servidor nginx sem interromper o serviço.

Algum conselho?

Substituir o nginx por outra coisa é uma opção.

    
por Alexander Gladysh 08.10.2010 / 03:27

3 respostas

2

Eu escrevi um pequeno aplicativo de rack há muito tempo exatamente para essa finalidade. Você pode conferir em link
Do readme:

Redirecionador

Um aplicativo de rack simples que facilita o redirecionamento de vários domínios.

Configuração

Para configurar o aplicativo, tudo o que você precisa fazer é editar o arquivo config.yaml, o seguinte é um exemplo de arquivo de configuração:

cosmicvent.net: # <== This is the host name of the domain which you want to redirect
  status: 302 # <== status code with which it is redirected, 302 for temporary redirects, 301 for permanent redirects
  location: 'http://cosmicvent.com' # <== the domain which it is redirected *to*


'localhost:3030':
  status: 301
  location: 'http://cosmicvent.com:3030'
    
por 19.12.2010 / 14:10
0

Não sei qual é a melhor opção no seu caso. Eu suponho que você poderia criar um cron job que gera parte de sua configuração do nginx e depois recarrega, mas isso parece ser um truque perigoso para mim.

Dependendo da quantidade de carga que você recebe nas URLs relativas, você pode simplesmente fazer com que o código do aplicativo dispare os redirecionamentos. Por exemplo, se você estiver usando o PHP, verifique a URL de entrada para ver se é a sua tabela de redirecionamento. Se estiver, envie de volta um redirecionamento HTTP para a URL canônica.

    
por 15.10.2010 / 19:36
0

Uma idéia é ter uma tabela de banco de dados (MySQL ou o que você tem) que você pode preencher com seus redirecionamentos. A cada hora, o cron pode disparar um script que examinará a tabela, ver se há novas entradas da última vez que foi executada e, em seguida, gerar uma nova configuração do nginx com base no que encontrar nessa tabela.

Sugiro usar algo como Ruby + ERB para fazer isso.

Depois disso, ele pode emitir um recarregamento contra o nginx para evitar interrupções no serviço.

    
por 15.10.2010 / 21:38