記事ディレクトリ
1. ApacheWebページの最適化
1。概要
- 企業では、Apacheの展開後にデフォルトの構成パラメーターのみが使用されるため、Webサイトに多くの問題が発生します。つまり、デフォルトの構成は以前の低サーバー構成用であり、以前の構成は現在のインターネット時代には適していません。
- 企業のニーズに応えるためには、Apacheのパフォーマンスと安定性を向上させる方法を検討する必要があります。これがApache最適化の内容です。
2.コンテンツを最適化する
- アクセス率を上げるためにWebページ圧縮機能を構成する
- 同時実行性を減らすためにWebページのキャッシュを構成する
- 作業モードの選択とパラメータの最適化
- 非表示のバージョン番号を構成する
- アンチリーチを構成する
- …
3.gzipの紹介
- gzip圧縮アルゴリズムを使用してWebページのコンテンツを圧縮し、それをクライアントブラウザーに送信するように、ApacheのWebページ圧縮機能を構成します。
- 圧縮後に送信し、ネットワークを介して送信されるバイト数を減らして、Webページの読み込みを高速化します
- また、トラフィックを節約し、ユーザーのブラウジングエクスペリエンスを向上させることができます
- gzipは検索エンジンのクローラーとより良い関係を持っています
4.Apache圧縮モジュール
- Webページ圧縮用のApacheの機能モジュールは次の
とおりです。-mod_gzipモジュール
-mod_deflateモジュール
- Apache 1.xに
は組み込みのWebページ圧縮テクノロジーはありませんが、サードパーティのmod_gzipモジュールを使用して圧縮を実行できます削除されました
- Apache 2.x
が開発されたとき、mod_gzipを置き換えるためにモジュールmod_deflateが組み込まれました
- mod_gzipモジュールとmod_deflateモジュールは
どちらもgzip圧縮アルゴリズムを使用しており、動作原理は類似しています。Mod_gzipの圧縮速度はわずかに速く、mod_gzipの圧縮率はわずかに高くなっています。
Mod_gzipはより多くのサーバーcpuを占有します
トラフィックの多いサーバーの場合、mod_deflateを使用すると、mod_gzipよりも高速にロードされる可能性があります。
5.Webページの圧縮を構成します
5.1mod_deflateモジュールがインストールされているかどうかを確認します
apachectl -t -D DUMP_MODULES | grep "deflate"
5.2インストールされていない場合は、Apacheを再コンパイルしてインストールし、モジュールを追加します
cd /usr/local/httpd/conf/
mv httpd.conf httpd.conf.bak1
systemctl stop httpd.service
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate #加入mod_deflate模块
make -j 4
make install
5.3mod_deflateモジュールの有効化を構成する
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.168.126.11:80
--105行--取消注释
LoadModule deflate_module modules/mod_deflate.so ##开启mod_deflate模块
--197行--取消注释,修改
ServerName www.xcf.com:80
--末行添加--
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
#代表对什么样的内容启用gzip压缩
DeflateCompressionLevel 9
#代表压缩级别,范围为1~9
SetOutputFilter DEFLATE
#代表启用deflate模块对本站点的输出进行gzip压缩
</IfModule>
5.4インストールを確認し、サービスを開始します
apachectl -t
#验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "deflate"
#检查模切模块是否已安装
deflate_module (shared)
Systemctl start httpd.service
5.5mod_deflate圧縮が有効かどうかをテストする
cd /usr/local/httpd/htdocs
#先上传一张图传到/usr/local/httpd/htdocs目录下,Xshell直接拖进去即可
vim index.html
<html><body><h1>30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!!</h1>
<img src= "zxc123.jpg"/>
</body></html>
systemctl restart httpd.service
echo "192.168.126.11 www.xcf.com" >> /etc/hosts
vim /etc/resolv.conf
nameserver 192.168.126.11
ブラウザを開いてアクセス
方法1:
Linuxシステムで、Firefoxブラウザを開き、右クリックしてクリックして要素を表示します。
[ネットワーク]- > [HTML、WSを選択]を選択します。その他の
アクセスhttp://192.168.126.11、200応答メッセージをダブルクリックして応答ヘッダーを表示します。コンテンツエンコーディングが含まれています:gzip
方法2:
フィドラーソフトウェアをWindowsシステムにインストールし、フィドラーソフトウェアを開きます。
インスペクターを選択します—>ヘッダー
ブラウザーを選択してhttp://192.168.126.11にアクセスし、200応答メッセージをダブルクリックしてContent-Encoding:gzipを表示します。仮想win10にツールをインストールし、ソフトウェアを直接そこにドラッグし、ダブルクリックしてインストールし、[スタート]をクリックし、プログラムをクリックして
開き、ブラウザインターフェイスを2回更新してから、ソフトウェアに戻って表示します。
6.Webページのキャッシュ時間を構成します
- mod_expireモジュール構成モジュールを介してapacheを構成します。これにより、Webページをクライアントブラウザーに一定期間キャッシュして、要求の繰り返しを回避できます。
- mod_expireモジュールを有効にすると、ページヘッダー情報のExpiresタグとCache-Controlタグが自動的に生成されます。クライアントブラウザは、タグに基づいて、サーバーに別のリクエストを行わずに、次のアクセスでローカルマシンのキャッシュ内のページを取得することを決定します。不要なトラフィックを減らし、アクセス速度を上げるという目的を達成するために、クライアントによる訪問の頻度と数を減らします
6.1mod_expiresモジュールがインストールされているかどうかを確認します
apachectl -t -D DUMP_MODULES | grep "expires"
6.2 mod_expiresモジュールがインストールされていない場合は、Apacheを再コンパイルしてインストールし、mod_expiresモジュールを追加します
systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf{
,.bak2}
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
#加入mod_ expires模块
make -j 4
make install
6.3mod_expiresモジュールの有効化を構成する
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.168.126.11:80
--111行- -取消注释
LoadModule expires_ module modules/mod_expires.so
#开启mod_expires模块
--199行--取消注释并修改
ServerName www.xcf.com:80
--末行添加--
<IfModule mod_expires.c>
ExpiresActive On
#打开网页缓存功能
ExpiresDefault "access plus 60 seconds"
#设置缓存60秒
</IfModule>
6.4インストールを確認し、サービスを開始します
apachectl -t
#验证配置文件的配置是否正确
apachectl -t -D DUMP_MODULES | grep "expires"
#检查mod_ deflate模块是否已安装
deflate_module (shared)
#已安装的正确结果
systemctl restart httpd.service
6.5キャッシュが有効かどうかをテストする
cat /usr/local/httpd/htdocs/index.html
方法1:
Linuxシステムで、Firefoxブラウザーを開き、右クリックしてクリックして要素を表示します。
[ネットワーク] —> [HTML、WSなど]を選択します
。http://192.168.126.11にアクセスし、200メッセージをダブルクリックして、応答ヘッダーの[有効期限]項目を表示します。
方法2:
Microsoft.NET4とフィドラーソフトウェアをWindowsシステムに順番にインストールし、フィドラーソフトウェアを開き、
インスペクターを選択します—>ヘッダー
ブラウザーを選択してhttp://192.168.126.11にアクセスし、200メッセージをダブルクリックして[有効期限]アイテムを表示します
2.Apacheセキュリティの最適化
1.バージョン情報を非表示にする
- Apacheのバージョン情報は、Webサイトにセキュリティリスクをもたらす特定の脆弱性情報を明らかにします
- 実稼働環境でバージョン情報を非表示にするようにApacheを構成します
バージョン情報は、前の実験で見ることができます:2.4.29(Unix)
vim /usr/local/httpd/conf/httpd.conf
-- 491行--取消注释
Include conf/extra/httpd-default.conf
vim /usr/local/httpd/conf/extra/httpd-default.conf
--55行--修改
ServerTokens Prod
#将原本的 Full 改为 Prod,将只显示名称,没有版本
#ServerTokens 表示 Server 回送给客户端的响应头域是否包含关于服务器 OS 类型和编译过的模块描述信息
systemctl restart httpd.service
浏览器访问http://192.168.126.11,双击200消息查看 Server 项
バージョン情報が正常に非表示になっていることがわかります。また、それを偽造して、後でさらに学習することもできます〜
2.アンチリーチ
- アンチホットリンクは、他のWebサイトのコードが、自分のサーバー上の写真、ファイル、ビデオ、およびその他の関連リソースを使い込むのを防ぐためのものです。
- 他の人がウェブサイトのこれらの静的リソースを使い込んだ場合、それは明らかに私たちのサーバーの帯域幅の圧力を増加させます
- 同じものにアクセスしてウェブサイトにアクセスする直接売春と同等ですが、サーバーリソースが使用されます
- ウェブサイトのメンテナーとして、サーバーの静的リソースが他のウェブサイトに使い込まれないようにする必要があります
ホットリンク仮想マシンを構成する
別のホットリンクホストを「白い売春」としてオンにし、リーチ防止ホストなしでサーバーを使用してWebページにアクセスします。
#安装httpd服务
yum -y install httpd
systemctl start httpd
#配置临时dns映射
echo "192.168.126.11 www.xcf.com" >>/etc/hosts
echo "192.168.126.12 www.zxc.com" >>/etc/hosts
WebホスティングWebサイトのホームページを編集する
vim /var/www/html/index.html
<html><body><h1>30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!30bian!!</h1>
<img src= "http://www.xcf.com/zxc123.jpg"/>
</body></html>
systemctl restart httpd.service
ローカルドメイン名アクセスを使用する
2.2アンチリーチを構成する
2.2.1mod_rewriteモジュールがインストールされているかどうかを確認します
apachectl -t -D DUMP_MODULES | grep "rewrite"
2.2.2 mod_rewriteモジュールがインストールされていない場合は、Apacheを再コンパイルしてインストールし、mod_rewriteモジュールを追加します
systemctl stop httpd.service
cd /usr/local/httpd/conf/
mv httpd.conf{
,.bak3}
yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
make -j 4
make install
2.2.3mod_rewriteモジュールの有効化を構成する
vim /usr/local/httpd/conf/httpd.conf
--157行--取消注释
LoadModule rewrite_module modules/mod_rewrite.so
--224行--
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
#打开 rewrite功能,加入 mode_rewrite 模板内容
RewriteEngine On
RewriteCond %{
HTTP_REFERER} !^http://xcf.com/.*$ [NC] #设置匹配规则
RewriteCond %{
HTTP_REFERER} !^http://xcf.com$ [NC]
RewriteCond %{
HTTP_REFERER} !^http://www.xcf.com/.*$ [NC]
RewriteCond %{
HTTP_REFERER} !^http://www.xcf.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.xcf.com/error.png #设置跳转动作
</Directory>
RewriteCond %{
HTTP_REFERER} !^http://www.chenweicom/.$ [NC] 的字段含义:
“%{
HTTP_REFERER}” :存放一个链接的 URL,表示从哪个链接访问所需的网页。
“!^” :表示不以后面的字符串开头。
“http://www.chenwei.com” :是本网站的路径,按整个字符串匹配。
“.$” :表示以任意字符结尾。
“[NC]” :表示不区分大小写字母。
RewriteRule ..(gif|jpg|swf)$ http://www.chenwei.com/error.png 的字段含义:
“.” :表示匹配一个字符。
“” :表示匹配 0 到多个字符,与“.”合起来的意思是匹配 0 到多次前面的任意字符,如果是 1 到多次匹配可以用“+”表示。
“.” :在这里的“\”是转义符,“.”就代表符号“.”的意思。因为“.”在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个转义符“\”,其它规则字符如果需要匹配,也做同样处理。
“(gif|jpg|swf)” :表示匹配“gif”、“jpg”、“swf”任意一个,“$”表示结束。最后的规则是以“.gif”、“.jpg”、“.swf”结尾, 前面是1到多个字符的字符串,也就是匹配图片类型的文件。
“http://www.chenwei.com/error.png” :表示转发到这个路径 。
整个配置的含义是 使用本网站以外的网站域名 访问本站的图片文件时,显示 error.png 这个图片
2.2.4Webページの準備
cd /usr/local/httpd/htdocs
#将error.png文件(这里自己可以挑一张png格式的图片,Xshell拖进去即可)
传到/usr/local/httpd/htdocs目录下