##############基於LAMP(LNMP)問架構深度優化---配置文文件#################javascript
三、修改配置文件參數實現隱藏版本號php
a、nginx隱藏版本號css
syntax server_tokens on|off;html
在nginx配置文件中加入「server_token off;」前端
httpjava
{node
.........linux
server_tokens off;nginx
.........web
}
b、Apache隱藏版本號
[root@LAMP ~]# egrep "Server|ServerS" /application/apache/conf/extra/httpd-default.conf
# This configuration file reflects default settings for Apache HTTP Server.
# ServerName directive.
# ServerTokens
# This directive configures what you return as the Server HTTP response
ServerTokens Full
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
ServerSignature On
[root@LAMP ~]#
其中黑體部分改分別改成以下:
ServerTokens Prod
ServerSignature Off
四、修改nginx/Apache的默認用戶及用戶組nobody
a、啓動nginx服務,使用的默認用戶爲nobody:
爲了防止黑客猜到這個用戶,咱們須要更改下特殊的用戶名,提供nginx服務用。
b、更改默認用戶的方法有兩種,第一種爲:
user:nginx nginx;
設置Nginx Worker進程運行的用戶以及用戶組
useradd nginx -s /sbin/nologin -M <==不須要有系統登陸權限,應該禁止其登陸,至關於Apache裏的用戶同樣
c、更改默認用戶的方法有兩種,第一種如上面所說,第二種爲:
./configure --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_module --with-http_ssl_module
提示:其實在前面編譯nginx服務時,咱們就這樣帶着參數編譯的。
d、Apache默認用直接修改配置文件內容:
[root@LAMP ~]# egrep "User|Group" /application/apache/conf/httpd.conf
# User/Group: The name (or #number) of the user/group to run httpd as.
User www
Group www
補充知識:
配置nginx worker進程個數
在高併發場景,咱們須要事先啓動更多的nginx進程以保證快速響應並處理用戶的請求。具體的配置參數以下:
worker_processes 8 <===指定了Nginx須要開啓的進程數,建議指定和CPU的數量相等或者乘2的進程數
work_processes 參數開始的設置能夠等於cpu的個數或者核數(work_cpu_affinity參數中的配置能夠指定第一個到最後一個進程分別使用的哪一個cpu),進程多一些,其實提供服務就不會臨時啓動新進程提供服務,減小了系統開銷,提高了服務速度。特殊場合也能夠考慮提升至CPU*2 的進程數,具體狀況要跟根據實際的業務來選擇,由於這個參數,除了CPU核數的影響外,和硬盤存儲的數據以及負載也有關。
查看linux服務器的核數的方法:
[root@LNMP application]# grep "physical id" /proc/cpuinfo
physical id : 0
physical id : 0
physical id : 1
physical id : 1
[root@LNMP application]#
能夠按照physical數量設置,或者將目前數量*2
五、事件處理模型優化
nginx的鏈接處理機制在於不一樣的操做系統採用不一樣的IO模型,在linux使用epoll的IO多路複用模型,在FreeBSD使用kqueue的IO多路複用模型,在Solaris使用/dev/poll方式的IO多路複用模型,在Windows中使用的是icop等等。
根據系統類型不一樣選擇不一樣use[kqueue|rtsig|epoll|/dev/poll|select|poll];該參數結合系統使用,不一樣系統使用參數不一樣,咱們使用的是Centos6.5,所以咱們調整爲epoll模型
具體參數配置以下:
events <====envents指令是設定nginx的工做模式及鏈接數上限
{
use epoll;
}
六、調整單個進程容許客戶端最大鏈接數
這個值根據根據具體服務器性能和程序的內存使用量來制定(一個進程啓動使用的內存根據程序肯定)
events <====指令設定Nginx的工做模式及鏈接數上限
{
worker_connections 20480;
}
worker_connections也是個模塊指令,用於定義Nginx每一個進程的最大鏈接數,默認是1024,客戶端最大鏈接數由worker_processes和worker_connections決定,即Max_client=worker_processes * worker_connections,進程的最大鏈接數受linux系統進程的最大打開文件數限制,在執行操做系統命令「umilited -HSn 65535」或者配置相應的文件後,worker_connections的設置才生效
七、配置每一個進程最大文件打開數
worker_rlimit_nofile 65536;
該參數的意思爲每一個進程打開的最大文件數,能夠設置爲系統優化受的ulimit -HSn的結果,在第一章系統安裝時調整文件描述符和這個處理的一個問題。
詳細查閱:http://nginx.org/en/docs/ngx_core_module.html
八、優化服務器名字的hash表大小
確切名字和通配符名字存儲在哈希表中。哈希表和監聽端口關聯,每一個端口都最多關聯三張表:確切的名字的哈希表,以星號(*)起始的通配符名字的哈希表和以星號結束的通配符名字的哈希表。哈希表的尺寸在配置階段進行了優化,能夠以最小的CPU緩存命中失敗來找到名字。nginx首先搜索切確名字的的哈希表,若是沒有找到,則搜索以星號(*)其實的通配符名字的哈希表,若是仍是沒有找到,繼續搜索以星號結束的通配符名字的哈希表。由於名字是按照域名的節點來搜索的。因此搜索通配符名字的哈希表比搜索確切名字的哈希錶慢。注意:nginx.org存儲在通配符名字的哈希表中,而不在確切名字的哈希表中。正則表達式是一個一個串行的測試,因此是最慢的,並且不可擴展。因爲上述緣由,咱們通常儘量的使用確切的名字。好比若是使用nginx.org和www.nignx.org來訪問服務器是最頻繁的,那麼咱們明確的定義出來對訪問搜索域名的速度效率來講更有效:
若是定義了大量名字,或者定義了很是長的名字,那就須要在php配置模塊中調整server_names_hash_max_size和server_names_hash_bucket_size的值。
server_names_hash_bucket_size的默認值多是32,或者是64,或者是其餘值,取決於CPU的緩存行的長度。若是這個值是32,那麼定義「too.long.server.name.nginx.org」做爲虛擬機主機名就會失敗,顯示以下錯誤信息:
could not build the server_names_hash,
you should increase server_names_hash_bucket_size;32
出現這種狀況,那就須要設置值擴大一倍:
http{
server_names_hash_bucket_size 64;
}
九、開啓高效的文件傳輸模式
sendfile on; <====sendfile參數用戶開啓文件高效傳輸模式,同時將tcp_nopush和tcp_nodelay兩個指令設置爲on用於防止網絡阻塞。
十、設置鏈接的超時時間
php服務,建議但願短鏈接;java建議長鏈接
keepalive_timeout 60;
<==設置客戶端保持會話的超時時間,超過這個時間,服務器會關閉鏈接。
tcp_nodelay on;
<==打開tcp_nodelay,包含了keepalive參數纔有效
client_header_timeout 15;
<==設置客戶端請求讀取超時時間,若是超過這個時間,客戶端還沒發送任何數據,Nginx將返回「Rquest timeout (408)」錯誤.
client_body_timeout 15;
<==設置客戶端請求主體讀取超時時間,若是超過這個時間,客戶端還沒發送任何數據,Nginx將返回「Request time out(408)」錯誤,默認值是60.
send_timeout 15;
<==指定響應客戶端的超時時間,這個超時時間僅限於兩個鏈接活動之間的時間,若是超過這個時間,客戶端沒有任何活動,Nginx將會關閉鏈接。
十一、上傳文件大小限制(動態應用)
主配置文件里加入以下參數,具體大小根據你本身的業務作調整。
client_max_body_size 10m;
十二、fastcgi調優(配合PHP引擎動態服務)
fastcgi_connect_timeout 300;
<==指定鏈接到後端FastCGI的超時時間
fastcgi_send_timeout 300;
<==向Fastcgi傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間。
fastcgi_read_timeout 300;
<==指定接收FastCGI應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI應答的超時時間
fastcgi_buffer_size 64k;
<==指定讀取FastCGI應答第一部分須要用多大的緩衝區,這個值表示將使用1個64k的緩衝區讀取應答的第一部分(應答頭),能夠設置爲fastcgi_buffers 選項指定的緩衝區大小。
fastcgi_buffers 4 64k;
<==指定本地須要用多少和多大的緩衝區來緩衝FastCGI的應答請求,若是一個PHP腳本產生的頁面大小爲256K,那麼會爲其分配4個64KB的緩衝區來緩存;若是頁面大小大於256KB,那麼大於256KB的部分會緩存到Fastcgi_temp指定的路徑中,可是這並非好方法;由於內存中的數據處理速度要快於硬盤,通常這個值應該爲站點中PHP腳本所產生的頁面大小的中間值,若是站點大部分腳本產生的頁面大小爲256KB,那麼能夠把這個值設置爲「16 16K」、「4 64K」等。
fastcgi_busy_buffers_size 128k;
<==建議爲fastcgi_buffers 的兩倍
fastcgi_temp_file_write_size 128k;
<==在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍,設置上述數值設置過小時若負載上來時能報 502 Bad Gateway
fastcgi_cache ucode_nginx;
<==表示開啓FastCGI緩存併爲其指定一個名稱,開啓緩存很是有用,能夠有效下降CPU的負載,而且防止502錯誤的發生,可是開啓緩存也可能會引發其餘問題,要根據具體狀況選擇。
fastcgi_cache_valid 200 302 1h;
<==用來指定應答代碼的緩存時間,實例中的值表示將200和302應答緩存一個小時。
fastcgi_cache_valid 301 1d;
<==將301應答緩存1天
fastcgi_cache_valid any 1m;
<==將其餘應答緩存爲1分鐘
fastcgi_cache_min_uses 1;
<==緩存在fastcgi_cache_path指令inactive參數時間內的最少使用次數
1三、修改nginx源碼文件進行優化:具體優化避免顯示header爲nginx和錯誤提示顯示nginx關鍵字和版本號
a、隱藏nginx做爲header頭
修改nginx源碼文件中的vim src/http/ngx_http_header_filter_module.c
光標分別移動到如下兩行(4九、50)修改紅色部分關鍵字爲其餘內容:
這裏改成Web SERVER和Web Server test
即修改以下字段:
"Server: nginx" CRLF;
"Server: NGINX_VER"
修改成:
"Server: Web Server" CRLF;
"Server: Web Server test"
從新編譯安裝nginx,而後啓動,經過curl -I 10.0.0.10 查看結果:
b、隱藏錯誤信息避免爆出關鍵字nginx及其版本號
修改錯誤頁面信息修改文件路徑爲:
vim nginx-1.7.10/src/http/ngx_http_special_response.c
修改成:
而後從新編譯、安裝、啓動nginx
提示:目前測試nginx版本是nginx-1.7.10,對於nginx其餘版本能夠根據須要修改對應參數,通常修改參數爲:
static u_char ngx_http_error_full_tail[] =
"<hr><center>"NGINX_VER"</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
和
static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
對應nginx-1.6版本只須要修改<center>nginx</center>便可
1四、配置nginx gzip壓縮功能
nginx gzip 壓縮模塊提供了對文件內容壓縮的功能,容許nginx服務器將輸出內容在發送之到客戶端以前根據具體的策略進行壓縮,以節約網站帶寬,同時提高用戶體驗。
此功能同Apache的mod_deflate壓縮功能,依賴ngx_http_gzip_module模塊,默認已安裝,咱們已經詳細介紹過壓縮功能。
常見要壓縮的的內容,如全部程序文件(js,css,html);而圖片、視頻、flash文件等文件不進行壓縮。
一、對應的壓縮參數說明以下:
gzip on;
<==開啓gzip壓縮功能。
gzip_min_length 1k;
<==設置容許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取,默認值是0,無論頁面多大都進行壓縮,建議設置成大於1K,若是小於1K可能會越壓縮越大。(即:大於1k才壓縮,小於1k不壓縮)
gzip_buffers 4 16k;
<==壓縮緩衝區大小。表示申請4個單位爲16k的內存做爲壓縮結果流緩存,默認值是與原始數據大小相同的內存空間來存儲gzip壓縮結果。
gzip_http_version 1.0;
<==壓縮版本(默認1.1,前端squid2.5時使用1.0)用戶設置識別http協議版本,默認是1.1,默認大部分瀏覽器已經支持GZIP
解壓,使用默認便可
gzip_comp_level 2;
<==壓縮比率。用來指定GZIP壓縮比,1壓縮比最小,處理速度最快;9壓縮比例最大,傳輸速度最快,但處理最慢,也比較消耗cpu資源。
gzip_types text/plain application/x-javascript text/css application/xml;
<==用來指定壓縮類型,「text/hmtl」類型老是會被壓縮。
gzip_vary on;
<==veray header 支持。該選項可讓前端的緩存服務器緩存通過GZIP壓縮的頁面,例如使用squid緩存通過nginx壓縮的數據。
二、完整的配置
gzip on;
gzip_min_length 1;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 9;
#gzip_types text/plain application/x-javascript text/css application/xml;
gzip_types text/html text/css text/xml application/javascript;
gzip_vary on;
更多官方資料http://nginx.org/en/docs/http/ngx_http_gzip_module.html
提示:gzip_types類型不一樣的版本可能會不一樣,對應的版本類型到文件mimes.types中查找:
在該路徑下查看當前nginx的安裝目錄下的mimes.types中查找匹配的類型:
[root@LNMP conf]# cat mime.types
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
image/svg+xml svg svgz;
image/webp webp;
application/font-woff woff;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
1五、nginx expire緩存功能
在網站開發和運營中,對於圖片,CSS,JS等元素更改機會較少,特別是圖片,這時能夠將圖片設置在瀏覽器本地緩存365天或者更長,CSS,JS,hmtl等代碼緩存10天,這樣用戶第一次打開頁面後,會在本地的瀏覽器緩存相應的上述內容,這樣緩存能夠提升下次用戶打開相似頁面的加速度,並節省服務器端大量的帶寬。此功能同Apache的expire,這裏經過location的功能,將須要緩存的擴展名列出來,而後指定緩存時間。
一、根據文件擴展名進行判斷,添加expire功能範例
企業網站緩存日期案例:
一、51cto 1周
二、sina 15天
三、京東 25年
四、淘寶 10年
通常不但願被緩存的內容:
1)廣告圖片
2)網站流量統計工具
3)更新頻繁的文件(google的logo)
配置示例:
location ~.*\.(gif|jpg|jpeg|png|bpm|swf)$
{
expires 365d;
}
location ~.*\.(js|css)?$
{
expires 30d;
}
location標籤要配到server標籤裏
location ~^/(images|javascript|js|css|flash|media|static)/
{
expire 360d;
}
Nginx防蜘蛛爬蟲處理
假定一個場景:某個網站它可能不但願被網絡爬蟲抓取,例如測試環境不但願被抓取,以避免對用戶形成誤導,那麼須要在該網站中申明,本站不但願被抓取。有以下方法:
方法一:修改nginx.conf,禁止網絡爬蟲的ua,返回403。
server {
listen 80;
server_name 127.0.0.1;
#添加以下內容便可防止爬蟲
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")
{
return 403;
}
方法2:網站更目錄下增長Robots.txt,放在站點根目錄下。
在http://tool.chinaz.com/robots/站點能夠針對如今的搜索引擎按照想要的規則生成robots.txt文件。
知識擴展:
robots.txt是搜索引擎中訪問網站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務器上什麼文件是能夠被查看的。
當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,若是存在,搜索機器人就會按照該文件中的內容來肯定訪問的範圍;若是該文件不存在,全部的搜索蜘蛛將可以訪問網站上全部沒有被口令保護的頁面。百度官方建議,僅當您的網站包含不但願被搜索引擎收錄的內容時,才須要使用robots.txt文件。若是您但願搜索引擎收錄網站上全部內容,請勿創建robots.txt文件。
Robots協議是國際互聯網界通行的道德規範,基於如下原則創建:
一、搜索技術應服務於人類,同時尊重信息提供者的意願,並維護其隱私權;
二、網站有義務保護其使用者的我的信息和隱私不被侵犯。
固然,若是搜索引擎不遵照約定的Robots協議,那麼經過在網站下增長robots.txt也是不起做用的。(在正式環境中,能夠適當容許搜索引擎抓取收錄)
爬蟲文件robots.txt
1六、nginx日誌相關優化與安全
nginx沒有相似Apache的cronolog日誌分割處理的功能,可是,能夠經過nginxNginx的信號控制功能或者reload重載,而後利用腳原本實現日誌的自動切割。
一、配置日誌切割腳本:
[root@masterserver conf]# cd
[root@masterserver]# mkdir -p /server/scripts/
[root@masterserver]# cd /server/scripts/
[root@masterserver scripts]# cat cut_nginx_log.sh
cd /application/nginx/logs && \
/bin/mv www_access.log www_access_$(date +%F -d -1day).log
/application/nginx/sbin/nginx -s reload
[root@masterserver scripts]#
提示:實際上腳本的功能很簡單,就是改名日誌,而後從新加載nginx,從新生成文件記錄日誌
二、將這段腳本保存後加入到Linux的crontab守護進程,讓此腳本在天天凌晨0點執行,就能夠實現日誌的天天分割功能了,操做結果以下:
[root@masterserverscripts]# crontab -l |tail -2
#cut nginx log on 00:00 everynight
00 00 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
[root@masterserver scripts]#
[root@masterserver logs]# ll
total 40
-rw-r--r-- 1 root root 1119 Mar 14 11:59 access.log
-rw-r--r-- 1 root root 1000 Mar 14 11:59 error.log
-rw-r--r-- 1 root root 6 Mar 14 11:57 nginx.pid
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-07.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-08.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-09.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-10.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-11.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-12.log
-rw-r--r-- 1 root root 1119 Mar 14 12:58 www_access_2016-03-13.log
[root@masterserver logs]#
1七、不記錄不須要訪問的日誌
對於健康檢查的某些(圖片,js,css)的日誌,通常不須要記錄,由於在統計PV時時按照頁面計算,並且日誌寫入頻繁會消耗IO,下降服務性能。具體語法以下:
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)${
access_log off;
}
Apache的處理配置方法:
一、須要根據訪問日誌統計pv時
由於統計pv時,一個頁面纔算一個PV圖片,JS,CSS等只是圖片的元素,若是記錄了,日誌計算PV就不許確了。
配置方法:
<FilesMatch "\.(css|js|gif|jpg|ico|swf)">
SetEnv IMAG 1
</FilesMatch>
日誌配置:
CustomeLog "|/usr/local/sbin/cronolog /app/logs/%Y%/%m/access_%Y%m%d.log" combined env=!IMAG
CustomeLog "|/usr/local/sbin/cronolog /app/logs/%Y%/%m/%d/%Haccess_%Y%m%d.log" combined env=!IMAG
1八、訪問日誌的權限設置
假如日誌目錄爲/app/logs,則受權方法
chown -R root.root /app/logs
chown -R 700 /app/logs
nginx、Apache主進程都是用root用戶啓動,因此不給權限也能夠寫入,即700程序能夠往裏面寫入數據
1九、根據擴展名限制程序和文件的訪問題(一樣適用於nginx)
爲了保證Apache的網站不遭受木馬入侵上傳及修改文件。
安全的權限:
一、全部站點目錄的用戶和組都應該爲root,
二、全部目錄默認權限是755;
三、全部文件默認權限爲644;
注意:網站服務的用戶不能用root,
以上權限的設置能夠作到防止黑客上傳木馬,以及修改站點文件,可是,合理的用戶上傳內容也被拒之門外了,那麼如何解決可讓合法的用戶上傳文件又不至於被黑客利用攻擊呢?
這就是對業務進行分離,在比較好的網站業務架構中,應該把資源文件,包括用戶上傳的圖片,附件等的服務和程序
大多數公司的不安全的受權以下:
1)chmod -R 777 /sitedir(最不安全)
2) chmod -R apache.apache /sitedir(最不安全)
若是大多數公司受權通常的受權,會給網站帶來最大的安全隱患。
20、nginx站點目錄及文件URL訪問控制
nginx下禁止訪問資源目錄下的php程序文件,配置方法以下:
範例1:nginx配置限制指定目錄下的php程序被解析
location ~ ^/images/.*\.(php|php5)$
{
|deny all;
}
location ~ ^/static/.*\.(php|php5)$
{
deny all;
}
location ~* ^/data/(attachment|avatar)/.*\.(php|php5)$
{
deny all;
}
這些目錄的限制必須寫在如下配置的前面:
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
include fcgi.conf
}
範例2:nginx下配置禁止訪問*.txt文件
location ~* \.(txt|doc)${
if (-f $request_filename){
root /data/www/www;
#rewrite ...能夠重定向到某個URL
break
}
}
location ~*\.(txt|doc){
root /data/www/www;
deny all;
}
2一、禁止訪問指定目錄下的全部的文件和目錄
範例1:配置禁止訪問指定的單個或多個目錄
單個目錄:
location ~ ^/(static)/{
deny all;
}
location ~ ^/static {
deny all;
}
多個目錄:
location ~ ^ /(static|js){
deny all;
}
2二、限制來源IP訪問
使用ngx_http_acces_module限制ip訪問
範例1:禁止某目錄讓外界訪問,但容許某IP訪問該目錄,且支持PHP解析
location ~ ^ /oldboy/{
allow 202.111.12.121;
deny all;
}
location ~ .*\.(php|php5)?${
}
範例2限制及指定IP或者ip段訪問
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
deny all;
}
參考:http://nginx.org/en/docs/http/ngx_http_access_module.html
2三、禁止資源目錄解析PHP程序
方法1:提示下載不解析(針對APACHE的設置)
<Directory ~ "/application/www/etiantian/bbs/attachments">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
php_flag engine off #注意這行
</Directory>