2016-01-04 69 views
2
location = /index.php { 
    allow MY-IP-HERE; 
    deny all; 
    } 

有了這個配置,因爲我不希望別人看到我在維護工作,每當我去index.php它下載文件,而不是讓我看到它。Nginx下載文件,如果我只允許自己看到它

但是,如果我禁用它,我可以查看它就好了。

我在這裏錯過了什麼嗎?

location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      # NOTE: You should have "cgi.fix_pathinfo = 0;" in 
      # php.ini 
      # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; 
      # With php5-fpm: 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      include fastcgi_params; 
    } 
+0

這是一個nginx的本地或託管實例嗎? –

+0

託管在運行Nginx的虛擬服務器上 – Codey93

+0

發生這種情況時下載了什麼? 0字節文件?或您的「訪問被拒絕」頁面?可以是您設置的任何內容,因爲您的「拒絕」頁面正在輸出不適合的MIME類型。 –

回答

2

這裏的問題是,你可能在以後在.conf文件中傳遞.php請求到一個PHP CGI處理程序。這裏有一個例子:

location ~ \.php$ { 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include  fastcgi_params; 
} 

當您之前添加一個位置,它會跳過手其關閉,以FastCGI的一個,所以它的治療像靜態內容的PHP文件。

如果你希望你的IP地址限制適用於所有的php文件,然後將你的允許/拒絕該位置匹配的內部(和擺脫,因爲現在它的空另一種的),像這樣:

location ~ \.php$ { 
     allow MY-IP-HERE; 
     deny all; 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     # NOTE: You should have "cgi.fix_pathinfo = 0;" in 
     # php.ini 
     # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; 
     # With php5-fpm: 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
} 

如果你想爲index.php,那麼你可以窩的位置相符:

location ~ \.php$ { 
    location ~ index\.php$ { 
      allow MY-IP-HERE; 
      deny all; 
     } 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     # NOTE: You should have "cgi.fix_pathinfo = 0;" in 
     # php.ini 
     # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; 
     # With php5-fpm: 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
} 

我相信,這將允許繼續傳遞給CGI。如果沒有,那麼你可能只需要複製index.php的FastCGI部分。

+0

我添加了我在fastcgi文件中看到的唯一的東西,就像你可能會說的那樣 - 我還不是Nginx的大天才。 – Codey93

+0

@ Codey93好的,所以你有一個選擇。你想*所有* PHP文件被限制到你的IP地址,或只是index.php?如果您希望所有人都被限制,那麼擺脫您的第一個「位置」並將允許/拒絕線移動到您發佈的第二個塊的頂部。 – vcsjones

+1

是的!這很有效,非常感謝 - 爲我節省了許多小時的愚蠢錯誤。 – Codey93

相關問題