一、開啓apache虛擬主機
l 編輯httpd.conf配置文件
vim /usr/local/apache2/conf/httpd.conf
找到# Virtual hosts
#Include conf/extra/httpd-vhosts.conf 把此行註釋去掉
l 編輯虛擬主機文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
找到:
<VirtualHost *:80>
ServerAdmin [email protected]
#管理員郵箱此行可註釋掉
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
#修改爲網站根目錄
#如網站位置在/data/www/index.html 則該行命令修改爲:
#DocumentRoot "/data/www/index.html"
ServerName dummy-host.example.com
#主域名,主域名可增加多條
ServerAlias www.dummy-host.example.com
#次域名
ErrorLog "logs/dummy-host.example.com-error_log"
#錯誤日誌存放位置
CustomLog "logs/dummy-host.example.com-access_log" common
#訪問成功日誌存放位置
</VirtualHost>
l PS:若配置好虛擬主機,出現無法訪問,請修改httpd.conf
vim /usr/local/apache2/conf/httpd.conf
<Directory /> 修 <Directory />
Options FollowSymLinks Options FollowSymLinks
AllowOverride None 改 AllowOverride None
Order deny,allow Order deny,allow
Deny from all 爲 Allow from all
</Directory> </Directory>
二、頁面認證
l 增加驗證安全,修改虛擬主機配置文件httpd-vhosts.conf的<VirtualHost *:80>虛擬主機模塊裏面加入以下代碼(以admin.php爲例):
<filesmatch admin.php> #表示當訪問此目錄此頁面時需要驗證密碼
AllowOverride AuthConfig
AuthName “www” #此處引號內容爲自定義
AuthType Basic
AuthUserFile /data/www/.htpasswd
#這裏的/data/www/.htpasswd 可隨便寫一個路徑或名字,沒有限制
require valid-user
</filesmatch> #filesmatch用於單個文件,Directory用於目錄
#若改成<Directory /data/www></Directory>表示當訪問該目錄都需要密碼驗證。
l 創建apache的驗證用戶
/usr/local/apache2/bin/htpasswd -c –m /data/www/.htpasswd liang #創建liang用戶,以md5方式加密,再添加用戶時不需要-c參數。
l 重新加載配置文檔
/usr/local/apache2/bin/apachectl graceful #直接重新加載不需要restart
三、域名跳轉
l 增加驗證安全,修改httpd-vhosts.conf配置文件,在<VirtualHost *:80></VirtualHost>裏面加入以下代碼:
<IfModule mod_rewrite.c>
RewriteEngine on
#多個域名跳轉則加入:
# RewriteCond %{HTTP_HOST} ^www.1chuangshe.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.1chuangshe.com$
RewriteRule ^/(.*)$ http://www.yichuangshe.net/$1 [R=301,L]
#重定向到此域名(301表示永久重定向,last結束符)
</IfModule>
四、日誌配置
l 增加驗證安全,修改虛擬主機配置文件httpd-vhosts.conf的<VirtualHost *:80></VirtualHost>模塊裏面的ErrorLog以及CustomLog修改成以下代碼:
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/discuz-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/discuz-access_%Y%m%d.log 86400" combined env=!image-request
# 以上配置表示,錯誤以及正確日誌每天歸檔一次,日誌不記錄圖片訪問相關信息
五、配置靜態文件緩存(節點存儲時效)
l 修改httpd.conf文件,(可以緩存全局環境,若修改在httpd-vhosts.conf只在該虛擬機生效),一般修改在全局配置文件httpd.conf,加入以下代碼:
<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 hours"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>
六、設置防盜鏈(防止服務器成爲他人存儲)
l 修改全局配置文件httpd.conf
SetEnvIfNoCase Referer "^http://.*\.lc-pb\.com" local_ref
SetEnvIfNoCase Referer "^www\.lc-pb\.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png|css)">
Order Allow,Deny
Allow from env=local_ref
Deny from env!=local_ref
</filesmatch>
七、訪問控制
l 控制該目錄訪問訪問
<Directory /data/www/install> #定義/data/www/install目錄按規則操作
Order Deny,Allow #規則順序,先執行Deny後執行Allow
Deny from all #拒絕所有訪問
Allow from 127.0.0.1 #只允許127.0.0.1訪問
</Directory>
l 控制該文件訪問控制
<filesmatch "(.*)admin(.*)"> #定義根目錄下含有admin字符按規則操作
Order Deny,Allow #規則順序,先執行Deny後執行Allow
Deny from all #拒絕所有訪問含有admin關鍵字的文件
Allow from 127.0.0.1 #允許自己訪問含有admin關鍵字的文件
</filesmatch>
l 控制該目錄下的該文件訪問控制
<Directory /data/www/> #定義/data/www目錄訪問規則
<filesmatch "(.*)admin(.*)">
Order Deny,Allow #規則順序,先執行Deny後執行Allow
Deny from all #拒絕所有訪問
Allow from 127.0.0.1 #允許自己訪問
</filesmatch>
</Directory>
八、 禁止目錄下解析PHP(針對某些上傳頁面做的安全設置,使用apache)
<Directory /data/www/data>
php_admin_flag engine off ##禁止解析 php 的控制語句
<filesmatch "(.*)php">
Order deny,allow
Deny from all
</filesmatch>
</Directory>
九、通過rewrite 限制某個目錄和限制user_agent(即用戶代理,不僅表示瀏覽器標識還包括搜索引擎)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/tmp/* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^*Firefox/4.0* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^*Baiduspider/2.0* [NC]
RewriteRule .* - [F]
</IfModule>
##限制了/tmp目錄訪問,並把火狐瀏覽器以及百度引擎RewriteRule .* - [F]直接禁止訪問
十、擴展模塊安裝(以PHP爲例子,該方法適用於apache、nginx服務等)
當編譯安裝時缺少沒一個模塊(即選項)時,可用一下方法
需要安裝yum install –y autoconf
l 下載mencache源碼包,並解壓,進入解壓後的源碼包目錄;
l 加載編譯文件
/usr/local/php/bin/phpize ##此路徑爲PHP已安裝的路徑
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install
cp modules/memcache.so /usr/local/php/ext
l 修改php.ini文件,在最後加上extension = memcache.so
vim /usr/local/php/etc/php.ini
l 重新加載apachel服務,然後檢驗是否加載成功:
/usr/local/apache2/bin/apachectl graceful
l 查看加載模塊
/usr/local/php/bin/php –m
##有memcache則表示成功。