2015-07-11 57 views
2

一個php文件我有一個很典型的php5-fpm的設置,像這樣:IP白名單nginx的,但仍然運行PHP

location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/home/gfd-dev/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
    include fastcgi_params; 
} 

,我只是想只是塊1個文件的IP地址,但隨後PHP不運行

location ^~ /script_to_hide.php { 
    allow 100.100.100.100; 
    deny all; 
} 

不要我把整個PHP $ PARAMS在兩個或是否有另一種方式來做到這一點,只是告訴PHP運行?

回答

2

nginx.conf

location ~ \.php$ { 
    include fastcgi_params; 
} 

location ^~ /secret_functions/ { 
    allow 100.100.100.100; 
    deny all; 
    include fastcgi_params; 
} 

fastcgi_params

... 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_pass unix:/home/gfd-dev/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 

附:

Nginx的通過基於the following logic每個位置重複:

location =/{ 
    [ configuration A ] 
} 

location/{ 
    [ configuration B ] 
} 

location /documents/ { 
    [ configuration C ] 
} 

location ^~ /images/ { 
    [ configuration D ] 
} 

location ~* \.(gif|jpg|jpeg)$ { 
    [ configuration E ] 
} 
+0

謝謝@mikhailov,我能做到這一點還,但我想我試圖找出是,如果我必須每做當我想做一個指令時,是否必須放入php位,如果我只是繼續複製並粘貼相同的代碼,它會變得非常混亂。有什麼包裝的方式來寫它?或者一個目錄可以更好地允許.php運行? – Dylan

+0

當然,我剛剛爲你更新了答案! – Anatoly