O nginx tem inclusões dinâmicas?

2

Existe alguma maneira de incluir um arquivo de configuração que seja recarregado em cada solicitação (talvez apenas quando for modificado)?

Algo como:

server {
    ...
    dynamic_include $document_root/.nginx;
}

Isso pode fazer com que as pessoas consigam se reproduzir de uma maneira eficiente. O htaccess encontrado no Apache como é opt-in e não stat() de todas as pastas por aí ...

    
por TesX 30.06.2013 / 15:06

3 respostas

2

Os arquivos de configuração normais são lidos apenas uma vez (durante a inicialização e quando solicitado externamente), mas você pode usar o HttpLuaModule para ter um pedaço de script Lua a ser avaliado em cada solicitação. O Nginx fornece 4 fases de requisição (reescrita, acesso, conteúdo, log) nas quais os scripts Lua podem ser executados.

Aqui estão algumas coisas que você pode fazer com o Lua (do manual):

  • Mashup'ing and processing outputs of various nginx upstream outputs (proxy, drizzle, postgres, redis, memcached, and etc) in Lua,
  • doing arbitrarily complex access control and security checks in Lua before requests actually reach the upstream backends,
  • manipulating response headers in an arbitrary way (by Lua)
  • fetching backend information from external storage backends (like redis, memcached, mysql, postgresql) and use that information to choose which upstream backend to access on-the-fly,
  • coding up arbitrarily complex web applications in a content handler using synchronous but still non-blocking access to the database backends and other storage,
  • doing very complex URL dispatch in Lua at rewrite phase,
  • using Lua to implement advanced caching mechanism for Nginx's subrequests and arbitrary locations.
    
por 08.07.2015 / 23:37
0

Não conheço nenhuma maneira de fazer o que você está procurando.

Eu não encontrei isso em nenhum dos meus trabalhos com o nginx, nem enquanto pesquisava a documentação do nginx ou a Internet.

Se algo assim existir (ou for possível), pode existir como um módulo (embora eu não tenha conseguido encontrar um que faça o que você está procurando) link

Aqui está uma sugestão:

O seu arquivo de configuração principal seria ideal para uma pasta onde todas as suas configurações são armazenadas. Se você tiver configurações armazenadas em outros locais, uma sugestão seria fazer links simbólicos para esses locais, de modo que nginx ainda as coisas estão todos armazenados em um ponto.

Alguma comida para pensar:

O que seria possível, é ... manualmente (ou via script) fazendo uma recarga de nginx:

link

Configuration reload Start the new worker processes with a new configuration Gracefully shutdown the old worker processes

Você pode criar um script bash que possa assistir a determinadas pastas para modificações ou novos arquivos com .conf (ou .nginx) e, em seguida, continuar a recarregar o nginx.

AVISO: Não tenho certeza se é uma ótima idéia (recarregar automaticamente o nginx), pelo menos não em produção ... já que você pode ter um erro de sintaxe ou uma configuração ruim que pode causar efeitos adversos se não for corretamente testado.

    
por 30.06.2013 / 15:38
-1

Você pode usar o nome da pasta curinga. Por exemplo, se a raiz do seu documento for /path/example.com/.nginx, você poderá usar

include /path/*/.nginx

Mas este arquivo será lido uma vez em iniciar / recarregar, não dinâmico.

    
por 08.07.2015 / 18:50

Tags