NGiNX 是個(gè)非常優(yōu)秀的HTTP 服務(wù)器軟件,可以通過設(shè)置有實(shí)現(xiàn)許多功能,如目錄保護(hù)、IP訪問限制、防盜鏈、下載限速及設(shè)置多域名等等。
一、NGINX目錄保護(hù)及訪問限制
Nginx保護(hù)目錄的配置如下,目錄密碼保護(hù)文件是 /usr/local/nginx/htpasswd
注意,設(shè)置目錄密碼保護(hù)時(shí),請注意配置區(qū)塊的位置,如果放在location ~ \.php$ {}區(qū)塊后面,如果打開的是靜態(tài)頁面或圖片等非php文件,會提示要輸入密碼,但是,如果打開的是php文件,則設(shè)置無效,會直接執(zhí)行php文件并顯示。
因此,一定要注意把要設(shè)置目錄密碼保護(hù)的區(qū)塊放在location ~ \.php$ {}區(qū)塊之前。
生成密碼文件:
二、NGINX防盜鏈
另外 NGiNX 防盜鏈,防止別人偷圖(視頻、flash、軟件…)當(dāng)然也是 OK 滴! 一樣也是在 server 的區(qū)段加上
這時(shí)候 location 的意思就是保護(hù)從網(wǎng)頁根目錄算起,所有的指定類型的文件都依照此規(guī)則
valid_referers none blocked 的意思就是不阻擋從哪些地方來的囉~這邊以空格來分隔允許的域名或 ip 位置
$invalid_referer 的意思就是不允許連結(jié)
rewrite ^/ 的意思就是指定不允許的連結(jié)自動(dòng)轉(zhuǎn)向到一個(gè)頁面,或是已經(jīng)有設(shè)定 404 轉(zhuǎn)址的也可以先注解掉這行再把 #return 404 的注解拿掉,就會自動(dòng)跑到你設(shè)定的 404 頁面了。
特別提醒:如何來看防盜鏈?zhǔn)欠袷巧У?,建議大家直接看服務(wù)日志,不要拿個(gè)網(wǎng)站來測試。
因?yàn)橛行┎灰樀募一铮ū热绨俣龋麜米约旱膱D片服務(wù)器來提供服務(wù)。
就是因?yàn)檫@個(gè)原因,上一次我在做這個(gè)的時(shí)候,浪費(fèi)了很多時(shí)間。
三、NGINX下載限速
NGiNX 還能限速再限制下載線程! 先在 http 區(qū)段找到 limit_zone,再把注釋拿掉~
四、NGINX多域名設(shè)置
今天在配置PHP+Nginx時(shí)出現(xiàn)一個(gè)嚴(yán)重的問題,在Nginx虛擬主機(jī)上綁定了泛域名,在程序中需要用二級域名指向不同的內(nèi)容,但無論如何訪問都只跳轉(zhuǎn)到主域名上!為了找到問題,一個(gè)一個(gè)試驗(yàn),得出如下結(jié)論:不管綁定多少域名,用 $_SERVER[“SERVER_NAME”] 只會返回虛擬主機(jī)中綁定的第一個(gè)域名!
比如綁定域名如下:
server_name www.exehack.net *.exehack.net
現(xiàn)在我不管用什么域名訪問, $_SERVER[“SERVER_NAME”] 都只會返回 www.exehack.net ??!這是個(gè)很嚴(yán)重的問題,對泛域名造成了致命的影響!
解決方法:
原來:
返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默認(rèn)的配置為:
Nginx中 $server_name 變量就是上面設(shè)置的域名,只會返回第一個(gè)!
這下好辦了,把上面的配置改成:
就行了。
另外還需要在server_name配置后面加一行:
意思是 讓 nginx 在處理自己內(nèi)部重定向時(shí)不默認(rèn)使用 server_name 設(shè)置中的第一個(gè)域名!
總而言之多多關(guān)注系統(tǒng)安全確保減少服務(wù)器負(fù)擔(dān),是每一個(gè)站長必做的功課。