前言
Apache不僅在飛機上有很好的評譽带欢,在服務器這塊想必也是家喻戶曉了吧运授。但是很多情況下,開發(fā)人員對于apache服務器的了解并不是很多乔煞,或許只是能把項目上線等吁朦。
我本人對這塊也是很陌生,為了以防萬一渡贾,于是也收集了一下相關的一些也算是比較實用的常識性的知識逗宜,做下記錄,以備今后不時之需吧。
默認首頁及網(wǎng)站路徑設置
apache中對于網(wǎng)站的默認首頁的設置是可以進行自定義處理的锦溪,下面簡單的來介紹一下使用方法不脯。
默認首頁
直接修改httpd.conf 文件中的DirectoryIndex值信息,配置如下:
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.html index.php
</IfModule>
DirectoryIndex后面的文件名可以羅列多個刻诊,但是服務器會默認以此為優(yōu)先級來進行資源頁面的顯示防楷。
在客戶端訪問網(wǎng)站時,服務器會在項目根目錄查找與此值一致的文件则涯,并進行向下匹配复局,找到的話就會顯示此文件內(nèi)容;否則會以服務器本身的目錄信息展示(如果沒有做目錄限制的話)粟判。
默認網(wǎng)站
一個apache服務器可以放置多個網(wǎng)站亿昏,這是毋庸置疑的,但是優(yōu)先顯示哪一個呢档礁?
答案很簡單角钩,找到DocumentRoot 字段,將后面的值修改為您的文件夾目錄即可呻澜。
我本人的設置為默認選項递礼,如下:
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "D:/php/apache/htdocs"
這完全是可以自定義的,就看個人的需求如何了羹幸。
禁止顯示目錄
出于對項目的安全性角度考慮脊髓,上線應用對外顯示目錄下文件信息不是一個好做法(但是在開發(fā)階段這個可不能少,想必大家都懂的)栅受。那么怎么進行設置呢将硝,且看下文吧。
試水設置
- 第一步:
打開httpd.conf文件 - 第二步:
找到如下代碼段:
<Directory />
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
然后將Options Indexes
為Options None
即可屏镊。
注意: 有些時候依疼,PHP版本不同或者PHP運行環(huán)境安裝包的不同,
Options Indexes
也有可能是Options Indexes FollowSymLinks
闸衫,不管怎樣一并修改為Options None
就行了涛贯,這也算是一個簡單粗暴的方法。
- 第三步:
保存httpd.conf
文件蔚出,然后重啟Apache服務器即可弟翘,接下來演示一下效果。
未做目錄限制時
做了處理之后
如果做了這些處理后骄酗,正常頁面也變得沒有訪問權限了稀余,如下圖所示
這說明你的AllowOverride 沒有設置好,這個時候?qū)偛诺哪嵌闻渲弥械?br> AllowOverride All 修改為AllowOverride None趋翻。這樣就行了睛琳。修改完之后保存配置文件,重啟您的apache服務器,然后就可以啦
需要知道的是只有在目錄下有index開頭的文件時师骗,服務器才會直接顯示此頁面(這一點同樣可以設置默認文件历等,還是在httpd.conf中設置,這一點比較簡單辟癌,不再敘述了)寒屯。否則的話就不會顯示資源頁面了,因為咱們這次設置的目標就是訪問目錄頁文件羅列黍少,來保護服務器應用的安全性寡夹。
淌水篇
上面簡單的設置了一下禁止瀏覽列出的文件列表或者目錄信息的方法,下面來看看Apache單個或者多個目錄禁止訪問的方法厂置。
- 第一步:
打開Apache配置文件httpd.conf - 第二步:
創(chuàng)建Directory節(jié)點菩掏,模仿著文件中原本的這個節(jié)點即可。然后具體內(nèi)容可以這樣設置
<Directory /var/www/guopuphp/inc>
Order Deny,Allow
Deny from all
</Directory>
如此便可以實現(xiàn)禁止所有用戶訪問guopuphp網(wǎng)站下的inc目錄的功能昵济。
如果想禁止訪問所有目錄中inc目錄的功能只需要修改為下面的配置就可以了智绸。
<Directory /var/www/guopuphp/*/inc>
Order Deny,Allow
Deny from all
</Directory>
如此看來,通配符就是有這樣的一個好處砸紊。
- 第三步:
保存此配置文件传于,重啟Apache服務器就可以了。
額外設置
除此之外醉顽,還可以設置一些其他簡單但是有效的處理。
只允許或者禁止某個域名進行目錄訪問
此時將剛才的Directory節(jié)點修改為如下:
<Directory /var/www/guopuphp/inc>
Order Deny,Allow
Deny from target.com
Allow from guopu.com
</Directory>
允許或者禁止的設置就可以通過Deny 或者Allow來進行處理平挑。
同樣的游添,對于限制IP訪問也是如此,只需要把域名修改為IP地址就可以了通熄。如果是對網(wǎng)段進行處理唆涝,在IP地址后面添加對應的子網(wǎng)掩碼位數(shù)即可。
除此之外唇辨,還可以通過DirectoryMatch節(jié)點廊酣,來使用正則匹配的方式來實現(xiàn)這一個效果。
<Directory ~ "^/var/www/(.+/)*[0-9]{3}">
Order allow,deny
Deny from all
</Directory>
禁止某些文件訪問
介紹了一下目錄級別的設置赏枚,下面聊聊文件級別的處理吧亡驰。上面部分對于配置文件的操作講解的已經(jīng)很詳細,下面只講述關鍵設置的部分吧饿幅。
禁止訪問某些文件
可以通過添加File是節(jié)點來實現(xiàn)凡辱,比如禁止訪問以.inc
結(jié)尾的拓展名的文件,可以使用下面的配置栗恩。
<Files ~ ".inc$">
Order allow, deny
Deny from all
</Files>
禁止對常見圖片的訪問
<FilesMatch .(?i:gif|jpe?g|png|bmp)$>
Order allow,deny
Deny from all
</FilesMatch>
針對URL相對路徑的禁止訪問
<Location /dir/>
Order allow, deny
Deny from all
</Location>
針對代理方式禁止對某些目錄的訪問
這點apache中可以通過Proxy來設置透乾,同樣可以使用ProxyMatch來使用正則匹配方式實現(xiàn)。
<Proxy http://cnn.com>
Order allow, deny
Deny from all
</Proxy>
總結(jié)
最后來回顧一下,本文內(nèi)容比較瑣碎乳乌。而且也不會經(jīng)常性的用到捧韵,隨用隨查吧。
雖然很多東西很小汉操,但是真的是很實用纫版。
<mark>凡事立于乎微,也敗于乎微客情。</mark>這句話大家都應該牢記于心其弊。