2012-10-18 25 views
1

目前,我需要把從Nginx的主文件繼承值?

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

在每一個網站,我需要運行PHP文件。

有沒有辦法只是把它放在一個「主」,這樣所有的網站將不會有相同的指令重複的副本?

回答

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 
} 

和seper吃了文件/etc/ningx/php-master.conf與作爲內容

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

它實際上並沒有縮短在serverblock代碼多(因爲包含位僅有1線)。但它仍然產生的好處是,你現在可以在一個地方改變你的PHP設置(比如你將你的fastcgi處理器移動到不同的端口或ip)

+0

即使我把這段代碼放在主文件中:'' location〜\ .php $ { fastcgi_pass 127.0.0.1:9000; }' } PHP文件不會在單獨的網站上運行,除非我將相同的代碼放在他們自己的'server {}'塊 – IMB

+0

基本上在後臺nginx將在解釋結果之前用包含文件的內容替換include指令。 (更新我的答案來說明) – cobaco

+0

啊,所以這是它的工作原理。我想這已經夠好了。謝謝 – IMB