Você move as coisas comuns para outro arquivo e include
it.
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?
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
.
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
}