Apache构建web主机、日志分割及AWStats分析系统
Apache小結(jié)
- 一、構(gòu)建虛擬 Web 主機(jī)
- 1.1 基于域名的虛擬主機(jī)
- 1.1.1 基于域名的虛擬主機(jī)構(gòu)建流程(理論)
- 1.1.1.1.為虛擬主機(jī)提供域名解析
- 方法一∶ 部署DNS域名解析服務(wù)器 來提供域名解析
- 方法二∶ 在/etc/hosts 文件中臨時(shí)配置域名與IP地址的映射關(guān)系
- 1.1.2基于域名的虛擬主機(jī)構(gòu)建流程(實(shí)操)
- 1.2 基于IP地址的虛擬主機(jī)
- 1.2.1 基于IP地址的虛擬主機(jī)構(gòu)建流程(理論)
- 1.3 基于端口的虛擬主機(jī)
- 1.3.1 基于端口的虛擬主機(jī)構(gòu)建流程(理論)
- 1.3.1 基于端口的虛擬主機(jī)構(gòu)建流程(實(shí)操)
- 二、Apache 連接保持
- 三、構(gòu)建Web虛擬目錄與用戶授權(quán)限制
- 3.1 構(gòu)建Web虛擬目錄與用戶授權(quán)限制(理論)
- 3.2 構(gòu)建Web虛擬目錄與用戶授權(quán)限制(實(shí)操)
- 四、Apache 日志分割
- 4.1 Apache 日志分割(理論)
- 4.2 Apache 日志分割(實(shí)操)
- 五、AWStats 分析系統(tǒng)
- 5.1 AWStats 分析系統(tǒng)(理論)
- 5.2 AWStats 分析系統(tǒng)(實(shí)操)
一、構(gòu)建虛擬 Web 主機(jī)
虛擬Web主機(jī)指的是在同一臺服務(wù)器中運(yùn)行多個(gè)Web站點(diǎn),其中每一個(gè)站點(diǎn)實(shí)際上并不獨(dú)立占用整個(gè)服務(wù)器,因此被稱為“虛擬”Web 主機(jī)。通過虛擬 Web 主機(jī)服務(wù)可以充分利用服務(wù)器的硬件資源,從而大大降低網(wǎng)站構(gòu)建及運(yùn)行成本。
使用httpd服務(wù)可以非常方便地構(gòu)建虛擬主機(jī)服務(wù)器,只需要運(yùn)行一個(gè)httpd服務(wù)就能夠同時(shí)支撐大量的Web站點(diǎn)。httpd服務(wù)支持的虛擬主機(jī)類型包括以下三種:
基于域名
基于IP地址
基于端口
1.1 基于域名的虛擬主機(jī)
為每個(gè)虛擬主機(jī)使用不同的域名,但是其對應(yīng)的 IP 地址是相同的。例如,www.benet.com 和 www.accp.com 站點(diǎn)的 IP 地址都是 192.168.80.100。這是使用最為普遍的虛擬 Web 主機(jī)類型。
1.1.1 基于域名的虛擬主機(jī)構(gòu)建流程(理論)
1.1.1.1.為虛擬主機(jī)提供域名解析
方法一∶ 部署DNS域名解析服務(wù)器 來提供域名解析
方法二∶ 在/etc/hosts 文件中臨時(shí)配置域名與IP地址的映射關(guān)系
echo “192.168.80.100 www.benet.com” >>/etc/hosts
echo “192.168.80.100 www.accp.com” >> /etc/hosts
2.為虛擬主機(jī)準(zhǔn)備網(wǎng)頁文檔
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo “www.benet.com”>/var/www/html/benet/index.html
echo “www.accp.com”>/var/www/html/accp/index.html
3.添加虛擬主機(jī)配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf #源碼編譯安裝的虛擬主機(jī)配置文件路徑
#vim /etc/httpd/conf.d/vhosts.conf #RPM或YUM安裝的虛擬主機(jī)配置文件路徑
<VirtualHost 192.168.80.10:80> #設(shè)置虛擬戰(zhàn)斗區(qū)域
#ServerAdmin webmaster@dummy-host.example.com #設(shè)置管理員郵箱,這行可忽略
DocumentRoot “/var/www/html/benet” #設(shè)置網(wǎng)站根目錄
ServerName www.benet.com #設(shè)置Web站點(diǎn)的完整域名(主機(jī)名+域名)
#ServerAlias www.dummy-host.example.com
ErrorLog “l(fā)ogs/benet.com-error_log” #設(shè)置錯(cuò)誤日志文件的路徑
CustomLog “l(fā)ogs/benet.com-access_log” common #設(shè)置訪問日志文件的路徑
<VirtualHost 192.168.80.10:80>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “l(fā)ogs/accp.com-error_log”
CustomLog “l(fā)ogs/accp.com-access_log” common
4.設(shè)置訪問控制
<Directory “/var/www/html”> #設(shè)置目錄訪問權(quán)限
Options None #不啟用任何的服務(wù)器特性
AllowOverride None #不允許重寫Apache默認(rèn)配置
Require all granted #允許所有主機(jī)訪問
Options指令解釋:
Options指令的主要作用是控制特定目錄將啟用哪些服務(wù)器特性。可以在Apache服務(wù)配置文件的虛擬主機(jī)配置(VirtualHost)、特定目錄配置(Directory)以及.htaccess文件中使用。
Options指令常用選項(xiàng):
None:表示不啟用任何的服務(wù)器特性。
FollowSymLinks:服務(wù)器允許在此目錄中使用符號連接(軟鏈接)。
Indexes:如果輸入的網(wǎng)址對應(yīng)服務(wù)器上的一個(gè)文件目錄,而此目錄中又沒有Apache配置文件中的DirectoryIndex指令指定的文件(例如: DirectoryIndex index.html index.php),則列出該目錄下的所有文件。
MultiViews:如果客戶端請求的路徑可能對應(yīng)多種類型的文件,那么服務(wù)器將根據(jù)客戶端請求的具體情況自動(dòng)選擇一個(gè)最匹配客戶端要求的文件。例如,在服務(wù)器站點(diǎn)的file文件夾下中存在名為hello.jpg和hello.html的兩個(gè)文件,此時(shí)用戶輸入 http://localhost/file/hello ,如果在 file文件夾下并沒有 hello子目錄,那么服務(wù)器將會嘗試在 file目錄下查找形如 hello.*的文件,然后根據(jù)用戶請求的具體情況返回最匹配要求的 hello.jpg或者 hello.html。
All:表示除 MultiViews之外的所有特性。這也是Options指令的默認(rèn)設(shè)置。
AllowOverride指令解釋:
.htaccess(分布式隱含配置文件):提供了針對每個(gè)目錄改變配置的方法,即在一個(gè)特定的目錄中放置一個(gè)包含特定指令的文件,其中的指令作用于此目錄及其所有子目錄。
當(dāng)AllowOverride設(shè)置成None時(shí),相應(yīng)的配置目錄下的.htaccess文件是不被讀取的,即無法生效。
當(dāng)AllowOverride設(shè)置成All時(shí),每一次請求訪問相應(yīng)目錄下的文件時(shí),都會讀取.htaccess文件的配置,意味著原Apache指令會被.htaccess文件中的指令重寫。
從性能和安全性考慮,一般都盡可能避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,都可放在主配置文件(httpd.conf)的 段中,而且高效。因此AllowOverride屬性一般都配置成None 。
地址限制策略:
Require all granted:允許所有主機(jī)訪問。
Require all denied:拒絕所有主機(jī)訪問。
Require local:僅允許本地主機(jī)訪問。
Require [not] host <主機(jī)名或域名列表>:允許或拒絕指定主機(jī)或域名訪問。
Require [not] ip <IP 地址或網(wǎng)段列表>:允許或拒絕指定 IP 地址網(wǎng)絡(luò)訪問。
5.加載獨(dú)立的配置文件
vim /usr/local/httpd/conf/httpd.conf #源碼編譯安裝的httpd服務(wù)主配置文件路徑
–483行–取消注釋
Include conf/extra/httpd-vhosts.conf #加載獨(dú)立的配置文件
#vim /etc/httpd/conf/httpd.conf #RPM或YUM安裝的httpd服務(wù)主配置文件路徑
IncludeOptional conf.d/*.conf #最后一行已默認(rèn)開啟此項(xiàng)
systemctl restart httpd
6.在客戶機(jī)中訪問虛擬 Web 主機(jī)
http://www.benet.com
http://www.accp.com
1.1.2基于域名的虛擬主機(jī)構(gòu)建流程(實(shí)操)
第一步:為虛擬主機(jī)提供域名解析(我這里使用第一種,使用自己寫的一鍵部署腳本,有需要可參考:一鍵部署DNS解析此篇博客!)
第二步:為虛擬主機(jī)準(zhǔn)備網(wǎng)頁文檔
第三步:添加虛擬主機(jī)配置
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
第四步:設(shè)置訪問控制
粘貼到虛擬主機(jī)配置文件的行尾并修改
第五步:加載獨(dú)立的配置文件
1)取消483行的注釋
第六步:在客戶機(jī)中訪問虛擬 Web 主機(jī)
我這邊補(bǔ)充一個(gè)故障點(diǎn):
1)由于我這虛擬機(jī)之前的IP是192.168.80.100,然后在做虛擬web主機(jī)之前我修改為192.168.153.30,在上面的設(shè)置做完后啟動(dòng)失敗了
2)出現(xiàn)報(bào)錯(cuò)后我們?nèi)タ匆幌氯罩疚募?var/log/messags的報(bào)錯(cuò)情況:無法綁定192.168.80.77
3)回到主配置文件vim /usr/local/httpd/conf/httpd.conf,搜索這個(gè)ip地址,然后修改為現(xiàn)在的ip
4)重啟服務(wù)進(jìn)行測試:沒有報(bào)錯(cuò),故障點(diǎn)排除成功
1.2 基于IP地址的虛擬主機(jī)
為每個(gè)虛擬主機(jī)使用不同的域名,且各自對應(yīng)的IP地址也不相同。這種方式需要為服務(wù)器配備多個(gè)網(wǎng)絡(luò)接口,因此應(yīng)用并不是非常廣泛。
1.2.1 基于IP地址的虛擬主機(jī)構(gòu)建流程(理論)
1.設(shè)置虛擬網(wǎng)卡
ifconfig ens33:0 192.168.153.40 netmask 255.255.255.0
2.修改虛擬主機(jī)配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.80.100:80>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “l(fā)ogs/benet.com-error_log”
CustomLog “l(fā)ogs/benet.com-access_log” common
<VirtualHost 192.168.80.111:80>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “l(fā)ogs/accp.com-error_log”
CustomLog “l(fā)ogs/accp.com-access_log” common
<Directory “/var/www/html”>
Options None
AllowOverride None
Require all granted
vim /usr/local/httpd/conf/httpd.conf
–53行–插入
Listen 192.198.153.40:80
3.重啟服務(wù)然后在客戶機(jī)的瀏覽器中訪問虛擬web主機(jī)
systemctl restart httpd
http://192.168.153.30
http://192.168.80.40
1.2.1 基于IP地址的虛擬主機(jī)構(gòu)建流程(實(shí)操)
1)設(shè)置虛擬網(wǎng)卡ip和網(wǎng)段
2)修改虛擬主機(jī)配置文件為192.168.153.40
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
3)修改主配置文件,增加IP和端口
vim /usr/local/httpd/conf/httpd.conf
4)重啟httpd服務(wù),然后在客戶機(jī)上訪問測試
然后在客戶機(jī)上訪問測試:兩個(gè)ip都可以正常訪問
1.3 基于端口的虛擬主機(jī)
這種方式并不使用域名、IP地址來區(qū)分不同的站點(diǎn)內(nèi)容,而是使用了不同的TCP端口號,因此用戶在瀏覽不同的虛擬站點(diǎn)時(shí)需要同時(shí)指定端口號才能訪問。
1.3.1 基于端口的虛擬主機(jī)構(gòu)建流程(理論)
1.修改虛擬主機(jī)配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.153.30:666>
DocumentRoot “/var/www/html/benet”
ServerName www.benet.com
ErrorLog “l(fā)ogs/benet.com-error_log”
CustomLog “l(fā)ogs/benet.com-access_log” common
<VirtualHost 192.168.153.40:888>
DocumentRoot “/var/www/html/accp”
ServerName www.accp.com
ErrorLog “l(fā)ogs/accp.com-error_log”
CustomLog “l(fā)ogs/accp.com-access_log” common
<Directory “/var/www/html”>
Options None
AllowOverride None
Require all granted
2.修改主配置文件
vim /usr/local/httpd/conf/httpd.conf
–53行–插入
Listen 192.198.153.40:888
3.重啟服務(wù)然后在客戶機(jī)的瀏覽器中訪問虛擬web主機(jī)
systemctl restart httpd
http://192.168.153.30:666
http://192.168.153.40:888
1.3.1 基于端口的虛擬主機(jī)構(gòu)建流程(實(shí)操)
第一步:修改虛擬主機(jī)配置文件
第二步:修改主配置文件的監(jiān)聽ip和端口
第三步:重啟服務(wù),在客戶機(jī)中瀏覽器訪問虛擬 Web 主機(jī)
在客戶機(jī)中瀏覽器通過ip和端口訪問虛擬 Web 主機(jī)
二、Apache 連接保持
操作步驟:
vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On
#設(shè)置是否打開連接保持功能,后面接OFF表示關(guān)閉,接ON表示打開。
#可以根據(jù)網(wǎng)站的并發(fā)請求量決定是否打開,即在高并發(fā)時(shí)打開連接保持功能,并發(fā)量不高時(shí)關(guān)閉此功能。
MaxKeepAliveRequests 100
#用于設(shè)置在一次長連接中可以傳輸?shù)淖畲笳埱髷?shù)量,超過此最大請求數(shù)量就會斷開連接,
#最大值的設(shè)置決定于網(wǎng)站中網(wǎng)頁的內(nèi)容,一般設(shè)置數(shù)量會多于網(wǎng)站中所有的元素。
KeepAliveTimeout 5
#設(shè)置來自同一個(gè)客戶端一次連接多次請求之間的最大間隔時(shí)間,
#即兩次請求之間超過該時(shí)間連接就會自動(dòng)斷開,從而避免客戶端占用連接資源。
vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/proxy-html.conf #取消此行的注釋
1)修改虛擬主機(jī)默認(rèn)配置文件
2)修改主配置文件
三、構(gòu)建Web虛擬目錄與用戶授權(quán)限制
3.1 構(gòu)建Web虛擬目錄與用戶授權(quán)限制(理論)
1.創(chuàng)建用戶認(rèn)證數(shù)據(jù)文件
cd /usr/local/httpd/bin
./htpasswd -c /usr/local/httpd/conf/user zhangsan
./htpasswd /usr/local/httpd/conf/user lisi
#-c選項(xiàng)表示新建用戶數(shù)據(jù)文件,缺省時(shí)則表示指定的用戶數(shù)據(jù)文件已經(jīng)存在,用于添加新的用戶或修改現(xiàn)有用戶的密碼。
cat /usr/local/httpd/conf/user #確認(rèn)用戶數(shù)據(jù)文件
2.添加用戶授權(quán)配置
vim /usr/local/httpd/conf/httpd.conf
–末行添加–
<Directory “/var/www/html/test”> #設(shè)置虛擬目錄配置區(qū)域
AuthName “Hello!” #定義受保護(hù)的領(lǐng)域名稱,會在認(rèn)證對話框中顯示
AuthType Basic #設(shè)置認(rèn)證的類型,Basic表示基本認(rèn)證
AuthUserFile /usr/local/httpd/conf/user #設(shè)置用于保存用戶賬號和密碼的認(rèn)證文件的路徑
Require valid-user #開啟用戶認(rèn)證,只有認(rèn)證文件中的合法用戶才能訪問
#authgroupfile /usr/local/httpd/conf/group #設(shè)置用于保存組賬號和密碼的認(rèn)證文件的路徑
#Require user zhangsan #僅允許指定用戶訪問
#Require group zhangsan #僅允許指定組訪問
3.驗(yàn)證用戶訪問授權(quán)
mkdir -p /var/www/html/test
echo “
this is vdir test
” > /var/www/html/test/index.htmlsystemctl restart httpd
在客戶機(jī)中瀏覽器訪問 http://192.168.80.10:80/test
3.2 構(gòu)建Web虛擬目錄與用戶授權(quán)限制(實(shí)操)
第一步:創(chuàng)建用戶認(rèn)證數(shù)據(jù)文件
第二步:添加用戶授權(quán)配置
第三步:驗(yàn)證用戶訪問授權(quán)
在客戶端進(jìn)行驗(yàn)證
四、Apache 日志分割
4.1 Apache 日志分割(理論)
1.修改主配置文件
使用Apache 自帶 rotatelogs 分割工具,將 Apache 的日志進(jìn)行按每天的日期自動(dòng)分割。
vim /usr/local/httpd/conf/httpd.conf
或
vim /etc/httpd.conf #行數(shù)不一樣,搜索一下ErrorLog和CustomLog進(jìn)行修改即可
–275行–修改
ErrorLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400” #分割錯(cuò)誤日志
–305行–修改
CustomLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400” combined #分割訪問日志
2.修改虛擬主機(jī)配置文件(有虛擬主機(jī)的時(shí)候根據(jù)需要在做,這里不需要設(shè)置)
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
ErrorLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-error_%F.log 86400”
CustomLog “| /usr/local/bin/rotatelogs -l /var/log/httpd/benet.com-access_%F.log 86400” combined
#開頭的 | 為管道符號。
#-l選項(xiàng)表示使用本地時(shí)間為時(shí)間基準(zhǔn)。
#86400表示一天,即每天生成一個(gè)新的日志文件。
3.創(chuàng)建分割后的日志文件保存目錄重啟服務(wù)
mkdir /var/log/httpd #創(chuàng)建分割后的日志文件保存目錄
systemctl restart httpd
ls /var/log/httpd
4.2 Apache 日志分割(實(shí)操)
第一步:修改主配置文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
第二步:創(chuàng)建分割后的日志文件保存目錄
五、AWStats 分析系統(tǒng)
AWStats 是使用Perl 語言開發(fā)的一款開源日志分析系統(tǒng),它用來完成自動(dòng)化的日志統(tǒng)計(jì)與分析工作。
5.1 AWStats 分析系統(tǒng)(理論)
1.將安裝AWStats 所需軟件包傳到/opt目錄下
awstats-7.6.tar.gz
2.安裝 AWStats 軟件包
cd /opt
tar zxvf awstats-7.6.tar.gz
mv /opt/awstats-7.6 /usr/local/awstats
3.為要統(tǒng)計(jì)的站點(diǎn)建立配置文件
cd /usr/local/awstats/tools
./awstats_configure.pl
…
Config file path (‘none’ to skip web server setup):
/usr/local/httpd/conf/httpd.conf #輸入httpd服務(wù)主配置文件的路徑
Your web site, virtual server or profile name:
www.kgc.com #輸入要統(tǒng)計(jì)的站點(diǎn)域名
其它全部是y 或者 回車
4.修改自動(dòng)生成的 awstats 訪問權(quán)限,加載 CGI 模塊(Apache 2.4 以上版本需要加載CGI 模塊)
vim /usr/local/httpd/conf/httpd.conf
ErrorLog “l(fā)ogs/error_log”
CustomLog “l(fā)ogs/access_log” combined
…
–143行–
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so #取消注釋
LoadModule cgi_module modules/mod_cgi.so #取消注釋
…
–跳至末行修改–
<Directory “/usr/local/awstats/wwwroot”>
Options None
AllowOverride None
#Order allow,deny #注釋掉
#Allow from all #注釋掉
Require all granted #添加
5.修改站點(diǎn)統(tǒng)計(jì)配置文件
vim /etc/awstats/awstats.www.kgc.com.conf
LogFile="/usr/local/httpd/logs/access_log" #修改訪問日志文件位置(由于日志格式問題,不能設(shè)置虛擬主機(jī)的日志)
DirData="/var/lib/awstats" #awstats目錄默認(rèn)不存在,需要手動(dòng)創(chuàng)建
mkdir /var/lib/awstats
6.執(zhí)行日志分析,并設(shè)置 cron 計(jì)劃任務(wù)
systemctl restart httpd
cd /usr/local/awstats/tools/
./awstats_updateall.pl now #更新數(shù)據(jù)(根據(jù)站點(diǎn)配置文件指定的日志文件路徑獲取日志數(shù)據(jù))
#注意,更新數(shù)據(jù)前最好先把a(bǔ)ccess.log文件清空后重新訪問站點(diǎn),再獲取日志數(shù)據(jù)。
crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
systemctl start crond
7.訪問 AWStats 分析系統(tǒng)站點(diǎn)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
echo “192.168.80.10 www.kgc.com” >> /etc/hosts
瀏覽器訪問
http://www.kgc.com/awstats/awstats.pl?config=www.kgc.com
8.優(yōu)化網(wǎng)頁地址
vim /usr/local/httpd/htdocs/aws.html
HTML 文件結(jié)構(gòu)解釋:
:用于HTML文件結(jié)構(gòu)最外層表示的標(biāo)簽 :用于HTML網(wǎng)頁內(nèi)容描述信息的頭標(biāo)簽 :用于顯示網(wǎng)頁內(nèi)容的內(nèi)容標(biāo)簽 :定義了 HTML 文檔中的元數(shù)據(jù),比如針對搜索引擎和更新頻度的描述和關(guān)鍵詞。這里的http-equiv=refresh 用于實(shí)現(xiàn)網(wǎng)頁自動(dòng)跳轉(zhuǎn)瀏覽器訪問
http://www.kgc.com/aws.html
5.2 AWStats 分析系統(tǒng)(實(shí)操)
第一步:放入軟件包
第二步:安裝 AWStats 軟件包
第三步:為要統(tǒng)計(jì)的站點(diǎn)建立配置文件
1)輸入httpd服務(wù)主配置文件的路徑
第四步:修改自動(dòng)生成的 awstats 訪問權(quán)限,加載 CGI 模塊(Apache 2.4 以上版本需要加載CGI 模塊)
1)取消下面兩行的配置
2)注釋537和538兩行配置,然后添加一行配置
3)恢復(fù)默認(rèn)日志文件位置
第五步:修改站點(diǎn)統(tǒng)計(jì)配置文件(由于日志格式問題,不能設(shè)置虛擬主機(jī)的日志)
1)修改站點(diǎn)統(tǒng)計(jì)配置文
vim /etc/awstats/awstats.www.kgc.com.conf
2)新建awstats目錄,然后重啟服務(wù)
第六步:清空access.log文件的日志內(nèi)容,然后在獲取日志數(shù)據(jù)
1)清空之前的日志內(nèi)容
第七步:設(shè)置cron計(jì)劃任務(wù)
crontab -e #編寫計(jì)劃性任務(wù),每5分鐘更新一次日志文件數(shù)據(jù)
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
systemctl start crond
第八步:訪問AwStats分析系統(tǒng)站點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的Apache构建web主机、日志分割及AWStats分析系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译安装mysqld php服务 安装论
- 下一篇: Apache的网页和安全优化