如何在多个 Nginx 服务器块中重复使用 PHP 配置指令?

如何在多个 Nginx 服务器块中重复使用 PHP 配置指令?

location ~ \.php$ { }因此,我使用 Nginx 和 php-fpm 为不同域上的多个站点提供服务。由于每个块中的块重复,配置文件变得非常大server { }

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;
    }
}

我无法将块移至另一个文件并将其包含进去,因为root每个实例都会发生变化。我该如何避免所有这些重复?

答案1

您将常见的内容移至另一个文件并将include其移出。

答案2

创建一个目录,并将/etc/nginx/package-configs/常见的 php 内容放入文件中/etc/nginx/package-configs/php.conf

要使用该文件,请在您的 php 位置输入include /etc/nginx/package-configs/php.conf

答案3

对于更通用的答案,您还可以使用模板:

# 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
}

相关内容