1、配置網站使用者認證
編輯虛拟機主機配置檔案 /usr/local/apache2/conf/extra/httpd-vhosts.conf,在虛拟主機配置檔案段内加入綠色标示代碼:
<VirtualHost *:80>
DocumentRoot "/data/www"
ServerName www.123.com
ServerAlias www.a.com www.b.com
<Directory *>
AllowOverride AuthConfig
AuthName "my test web"
AuthType Basic
AuthUserFile /data/www/.htpasswd
require valid-user
</Directory>
</VirtualHost>
DocumentRoot 主目錄
ServerName 網站域名
ServerAlias 網站别名,可以寫多個;
AuthName可以自定義;
AuthUserFile 指定使用者認證的使用者名和密碼存放檔案。
儲存退出;使用apachectl -t測試配置是否正确,apachectl restart 重新開機服務。
/usr/local/apache2/bin/htpasswd 建立使用者和密碼的指令
格式為:htpasswd -c /data/www/.htpasswd username
第一次建立使用者要用到-c 參數(create建立新檔案);第2次添加使用者,不用-c參數,如果加-c則會覆寫之前的檔案。
.htpasswd是來存放使用者名和密碼的;可以使用cat檢視;
修改密碼的格式為:htpasswd -m /data/www/.htpasswd user2
-m 表示使用md5加密密碼;預設是-d CRYPT加密。
-D 删除使用者及密碼
1
2
3
4
5
6
7
8
9
<code>[root@yong www]</code><code># /usr/local/apache2/bin/htpasswd -c /data/www/.htpasswd test</code>
<code>New password: </code>
<code>Re-</code><code>type</code> <code>new password: </code>
<code>Adding password </code><code>for</code> <code>user </code><code>test</code>
<code>[root@yong www]</code><code># cat .htpasswd</code>
<code>test</code><code>:$apr1$V0vKfDb9$MJR..TkbZy7XkFx085IRc1</code>
<code>[root@yong www]</code><code># apachectl -t</code>
<code>Syntax OK</code>
<code>[root@yong www]</code><code># apachectl restart</code>
打開IE浏覽器進行測試,彈出對話框需要輸入認證的使用者及密碼才可以通路網站。
<a href="http://s3.51cto.com/wyfs02/M02/6C/53/wKioL1VG2iaAdLY_AAG3e8hCRiY461.jpg" target="_blank"></a>
2、配置域名跳轉
網站可以設定域名多個域名别名,設定通路别名時直接跳轉到主域名;
主域名為:www.123.com 别名域名為:www.a.com www.b.com 通路别名域名跳轉到123.com;301是永久跳轉,302是暫時跳轉;有多個域名跳轉要加[OR]
在虛拟主機配置檔案段内加入:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.a.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.b.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
每次修改完配置檔案都需要重新開機apache服務,切記切記!!!!!
打開浏覽器通路www.a.com www.b.com 都會跳轉到www.123.com
或者使用curl 進行測試,Location顯示主域名則表示跳轉成功。
<code>[root@localhost www]</code><code># curl -x127.0.0.1:80 www.a.com -I</code>
<code>HTTP</code><code>/1</code><code>.1 </code>
<code>301 Moved Permanently</code>
<code>Date: Fri, 01 May 2015 08:14:24 GMT</code>
<code>Server: Apache</code><code>/2</code><code>.2.16 (Unix) DAV</code><code>/2</code> <code>PHP</code><code>/5</code><code>.3.28</code>
<code>Location: http:</code><code>//www</code><code>.123.com/</code>
<code>Content-Type: text</code><code>/html</code><code>; charset=iso-8859-1</code>
<code>[root@localhost www]</code><code># curl -x127.0.0.1:80 www.b.com -I</code>
<code>Date: Fri, 01 May 2015 08:21:06 GMT</code>
3、配置日志輪詢
apache的主配置檔案中定義的log格式,第一種是複雜格式,第2種是普通格式;日常工作中使用複雜模式。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
%h 遠端主機
%l 遠端主機登入名稱
%u 認證使用者
%t 事件産生時間
%r 請求封包的第一行(方法、資源、版本号)
%>s 最後一個請求對應的狀态碼
%b 響應封包的大小
%Referer 從哪個頁面來的
%user-Agent 用戶端浏覽器類型
紅色标示的需要填寫日志的絕對路徑,自定義日志名稱;
複制下面的代碼到虛拟主機配置中:
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-error_%Y%m%d.log 86400"
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/123.com-access_log_%Y%m%d.log 86400" combined env=!image-request
日志裡面不記錄gif、jpg、png、bmp、swf、js、css 的資訊,日志格式按照每天日期命名,86400代表一天24小時;
4、配置靜态檔案緩存
定義圖檔、css、js、swf 的過期時間;
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
Expires 文法如下:
ExpiresByType type/encoding "<base> [plus] <num> <type>}*"
其中<base>是下列之一:
access 、now (等價于'access') 、modification
plus關鍵字是可選的。 <num>必須是整數,
<type>是下列之一:
years months weeks days hours minutes seconds
使用curl測試,主要檢視cache-Control: max-age 這個時間;
實驗結果,在www目錄建立jpeg gif png css js swf檔案測試;
10
<code>[root@www]</code><code># curl -u test:1234 -x127.0.0.1:80 www.123.com/2.jpeg -I</code>
<code>HTTP</code><code>/1</code><code>.1 200 OK</code>
<code>Date: Sun, 03 May 2015 09:01:04 GMT</code>
<code>Last-Modified: Sun, 03 May 2015 08:58:38 GMT</code>
<code>ETag: </code><code>"3ffcf-0-51529a6b14497"</code>
<code>Accept-Ranges: bytes</code>
<code>Cache-Control: max-age=86400</code>
<code>Expires: Mon, 04 May 2015 09:01:04 GMT</code>
<code>Content-Type: image</code><code>/jpeg</code>
<code>[root@www]</code><code># curl -u test:1234 -x127.0.0.1:80 www.123.com/1111.js -I</code>
<code>Date: Sun, 03 May 2015 09:05:33 GMT</code>
<code>Last-Modified: Sun, 03 May 2015 09:03:22 GMT</code>
<code>ETag: </code><code>"3ffd2-0-51529b7a635d6"</code>
<code>Cache-Control: max-age=7200</code>
<code>Expires: Sun, 03 May 2015 11:05:33 GMT</code>
<code>Content-Type: application</code><code>/javascript</code>
5、防盜鍊
防止網站的圖檔、文檔、音樂等格式他人盜用連結,隻允許指定的域名可以連結。
模闆如下,定義的檔案格式可以自行添加;
SetEnvIfNoCase Referer "^http://www.123.com" local_ref
SetEnvIfNoCase Referer "www.a.com" local_ref
SetEnvIfNoCase Referer "www.b.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpeg|png|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
使用curl -e 檢測防盜鍊,不是白名單的域名會顯示403錯誤;
實驗結果:其他網站使用連結位址會報403錯誤;401錯誤是網站有使用者認證,需要加-u參數指定使用者認證登入才可以。
<code>[root@www]</code><code># curl -e "http://www.baidu.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I</code>
<code>HTTP</code><code>/1</code><code>.1 403 Forbidden</code>
<code>Date: Sun, 03 May 2015 09:25:06 GMT</code>
<code>[root@www]</code><code># curl -e "http://www.a.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I</code>
<code>401 Authorization Required</code>
<code>Date: Sun, 03 May 2015 09:27:48 GMT</code>
<code>WWW-Authenticate: Basic realm=</code><code>"my test web"</code>
<code>[root@www]</code><code># curl -u test:1234 -e "http://www.a.com/2.jpg" -x127.0.0.1:80 www.123.com/2.jpg -I</code>
<code>Date: Sun, 03 May 2015 09:28:08 GMT</code>
<code>Expires: Mon, 04 May 2015 09:28:08 GMT</code>
<code>http://blog.51cto.com/mofansheng</code>
本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1641628,如需轉載請自行聯系原作者