【问题标题】:Inherit values from a master file in Nginx?从 Nginx 中的主文件继承值?
【发布时间】:2012-10-19 05:48:24
【问题描述】:

目前,我需要放

location ~ \.php$
{
    fastcgi_pass 127.0.0.1:9000;
}

在我需要运行 PHP 文件的每个站点中。

有没有办法把它放在一个“master”中,这样​​所有网站都不会有相同指令的重复副本?

【问题讨论】:

    标签: php nginx webserver


    【解决方案1】:

    是的,就像这样:

    include /etc/nginx/master.conf; 
    

    更多详情见http://nginx.org/en/docs/ngx_core_module.html#include

    换句话说,你有:

    server {
      servername a;
      location ~ \.php$ { fastcgi_pass 127.0.0.1:9000;}
    
      #rest of server a config
    }
    
    server {
      servername b;
      location ~ \.php$ { fastcgi_pass 127.0.0.1:9000;}
    
      #rest of server b config
    }
    

    你现在有:

    server {
      servername a;
      include /etc/nginx/php-master.conf;
    
      #rest of server a config
    }
    
    server{
      servername b;
      include /etc/nginx/php-master.conf;
    
      #rest of server b config
    }
    

    和一个单独的文件 /etc/ningx/php-master.conf 作为内容

    location ~ \.php$ { 
      fastcgi_pass 127.0.0.1:9000;
    }
    

    它实际上并没有大大缩短 serverblock 中的代码(因为包含的位只是 1 行)。但它仍然具有优势,您现在可以在 1 个位置更改 php 设置(例如,您将 fastcgi 处理程序移动到不同的端口或 ip)

    【讨论】:

    • 问题是,即使我将此代码放在主文件中:location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; } PHP 文件也无法在单个站点上运行,除非我将相同的代码放在自己的 server { } 块中跨度>
    • 基本上在幕后 nginx 会在解释结果之前将 include 指令替换为包含文件的内容。 (更新了我的答案以说明)
    • 啊,原来如此。我想这已经足够好了。谢谢
    • 如果我在服务器块中包含相同的位置指令并放置不同的值,它会合并主值还是只保存服务器块中提到的值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2023-04-10
    • 2012-03-27
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多