Como posso reutilizar diretivas de configuração do PHP em vários blocos do servidor Nginx?

2

Então eu tenho Nginx & php-fpm servindo vários sites em diferentes domínios. O arquivo de configuração fica muito grande devido à repetição de location ~ \.php$ { } de blocos em cada server { } de bloco:

server {
    listen 80;
    server_name firstsite.com;
    root /var/www/firstsite;

    location ~ \.php$ {
        root           /var/www/firstsite;
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
server {
    listen 80;
    server_name secondsite.com;
    root /var/www/secondsite;

    location ~ \.php$ {
        root           /var/www/secondsite;
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Não consigo mover os blocos para outro arquivo e incluí-lo, pois root é alterado em cada instância. Como posso evitar toda essa repetição?

    
por BaronVonKaneHoffen 16.09.2013 / 19:19

3 respostas

6

Você move as coisas comuns para outro arquivo e include it.

    
por 16.09.2013 / 19:20
3

Crie um diretório como /etc/nginx/package-configs/ e coloque as coisas comuns do php no arquivo /etc/nginx/package-configs/php.conf .

Para usar o arquivo, nos locais do seu php, coloque include /etc/nginx/package-configs/php.conf .

    
por 16.09.2013 / 19:46
3

Para uma resposta mais genérica, você também pode usar um modelo:

# conf.d/sites.conf
server { 
  set $sitename brazzers.com
  include conf.d/site.template;
}
server { 
  set $sitename playboy.com
  include conf.d/site.template;
}

# site.template
location / {
        root /var/www/$sitename;
        # etc etc etc
}
    
por 18.09.2013 / 17:30

Tags