2012-10-18 2 views
1

현재, 나는 PHP 파일을 실행하는 데 필요한 각각의 모든 사이트에Nginx에서 마스터 파일의 값을 상속합니까?

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

을 넣어해야합니다.

"마스터"에 넣을 수있는 방법이 있습니까? 모든 사이트에서 같은 지시문을 중복해서 복사하지 않으시겠습니까? 그래서 같은

답변

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 
} 

과 별개의 그것은 실제로 (포함 된 비트는 단지 한 라인으로) 많은 serverblock의 코드를 단축하지 않습니다

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

내용으로 함께 /etc/ningx/php-master.conf 파일을 먹었다. 하지만 여전히 한 곳에서 PHP 설정을 바꿀 수 있다는 장점이 있습니다 (fastcgi 처리기를 다른 포트 또는 ip로 이동한다고합시다)

+0

이 코드를 마스터 파일에 넣어도, 위치 ~ \ .php $ { fastcgi_pass 127.0.0.1:9000; }' PHP 파일은 각자의'server {}'블록에 넣지 않는 한 개별 사이트에서 작동하지 않습니다. – IMB

+0

기본적으로 뒤에서 nginx는 결과를 해석하기 전에 포함 된 파일의 내용을 include 지시문으로 대체합니다 . (설명하기 위해 나의 대답을 업데이트했다) – cobaco

+0

아 어떻게 그렇게 작동하는지. 나는 이것이 충분하다고 생각한다. thanks – IMB

관련 문제