チューニングApacheの(A)

 

(1)の関係.ApacheとTomcat

  ApacheのHTTPDサーバーとApache TomcatがApacheのオープンソースプロジェクトに属しています。二つは、使用するWebサーバーとして単独で使用することができますが、それは独自の特性を持っています。ApacheのHTTPDの一般的なものApacheと呼ばれます

  Apacheは、プロジェクトをサポートするために、古い静的なWebサーバーです。Tomcatは、主に、動的Webプロジェクトをサポートするデータベース・システムと対話するために使用されます。もちろん、Tomcatはまた、静的なWebシステムを開発するために使用されるが、のhttpdの性能よりも悪化することができます。Apacheモジュールから、我々は名前に「モッズ_ *。だから、」へのモジュールの多くを見ることができるので、Apacheはもちろん、動的なWebをサポートすることができます。これらのモジュールは、PHP、CGIや他のサーバー側の開発言語の使用を扱うことができるように、Apacheの機能を拡張しますが、Javaプログラム(JSP、serverlet)を説明することはできません。しかし、それは、Tomcatと通信することができる(片道接続のApache Tomcat、ApacheのTomcatを介してアクセス可能であるリソース。その逆はありません)

  Tomcatの自体は、Javaサーブレットエンジンの典型的なものです。これは、Javaサーブレットコンテナサーブレットのライフサイクル管理を使用した、など、動的なページ要求を処理することはありません。.. TomcatはApacheのの延長であると我々は考えることができます。

  どちらも、ちょうど別の何かをリリースした容器です。HTMLのApacheは、TomcatはJSPやJAVAを公開するために使用されるJSP /サーブレットコンテナ、コンテナ、IISと同じ機能ですが、IBMは、などと同様のwebshere、EBAのweblogicと、JRunの日を、持っています

  Apache Tomcatの独立しており、を通じて単一のサーバ上に統合することができます。アナロジー:トラックをApacheは、それが何かの上、HTMLなどなどにインストールすることができます。しかし、水を保持することができない、容器(バレル)に水で満たされなければならない、Tomcatは、(水ロードJAVAなど)バケツであり、これは、バケットトラックに配置されなくてもよいです。

(2)Apacheのバージョン情報を隠します

  効果的な攻撃に対応する脆弱性を調べ、Apacheのバージョン情報の下にハッカーを防ぐことができますバージョン番号を非表示にします。

  レスポンスヘッダを表示するためにカール-I [IPアドレスまたはドメイン名]を使用し、[サーバーのバージョンを確認することができ、Baiduの、淘宝網、テンセントServerのバージョンを見て、彼らがhideのバージョンを行っています。

[ルート@のyouxi1〜]#カール-I www.baidu.com | grepのサーバー
  Xferd平均速度時間時間時間現在の%の合計%受信%
                                 DLOADアップロード合計が左スピード過ごした
  - :: - - - : - : - - : - :0 277 0 0 0 0 0 0 - 0 
サーバー:BFE / 1.0.8.18 
[ルート@のyouxi1〜]#カール-I www.taobao.com | grepのサーバー
  Xferd平均速度時間時間時間現在の%の合計%受信%
                                 DLOADアップロード合計が左スピード過ごした
  - :: - - - : - : - - : - :0 278 0 0 0 0 0 0 - 0 
サーバー:Tengine  
[ルート@ youxi1〜]#カール-I www.tencent.com | grepのサーバー
  %合計%受信%Xferd平均速度時間時間時間現在
                                 DLOADアップロード合計は左速度を過ごし
  0 189 0 0 0 0 0 0 - : - : - - : - : - - : - : - 0 
サーバー:NWS_UGC_HY

  Apacheのソースパッケージを(ダウンロードhttps://mirrors.aliyun.com/apache/httpd/)とソースコードをコンパイルする前にアップロードし、適切な設定ファイルを変更

[youxi1ルート@〜]#タール-2.4.39.tar.gz -C zxf httpdのは/ usr / local / srcに/ 
/usr/local/src/httpd-2.4.39/ [ルートyouxi1 @〜]#のCD 
[ルート@ youxi1のhttpd-2.4.39]#のvimの / ap_release.h //が含ま最初の40〜47行は、変更
以前AP_SERVER_BASEVENDOR "IIS" //サービスプロバイダ名、ソフトウェア財団Apacheの#defineし
ます。#define AP_SERVER_BASEPROJECT "IIS HTTP Serverの" / /サービス名は、元のHTTPサーバはApacheのある
以前の#define AP_SERVER_BASEPRODUCT「IIS」//サービス、製品名は、Apache 

の#define AP_SERVER_MAJORVERSION_NUMBER 7 //メジャーバージョン番号は、元の2 
の#define AP_SERVER_MINORVERSION_NUMBER 0 //小さなバージョン番号、元4 
以前の#define AP_SERVER_PATCHLEVEL_NUMBER 0 //パッチレベル、39 
の#define AP_SERVER_DEVBUILD_BOOLEAN 0

  そして、依存関係をインストールし、コンパイラのインストール

//依存関係をインストール
[youxi1のhttpd-2.4.39 @ルート]#yumのに4月-develの-develのはzlibはzlib-develのOpenSSLのOpenSSLのdevelの-GCCでは4月のPCREのPCREでは4月-utilの-develの上で4月-Y-utilのにインストール
可能- //を、伝送サポートページ前に圧縮可能-デフレート- - - SOは、動的にロードされるモジュールをサポートしています-書き換え可能-書き換えをサポートサイトのアドレス、 -有効-SSLをSSL暗号化のサポートを有効-期限が切れるキャッシュされたページが時間の設定をサポート
[ルート@ youxi1のhttpd-2.4.39] #は./configure --prefix =は/ usr / local / apache2.4.39 --enable-SO --enable-書き換え--enable-SSLは--enable- --enable-収縮有効期限
#makeが&& make installを[youxi1のhttpd-2.4.39 @ルート]を
[ルート@ youxi1のhttpd-2.4.39]#エコー$を?
0

  起動して参照するには、スタートアップスクリプトを生成します。

#CPは/usr/local/apache2.4.39/bin/apachectlの/etc/init.d/httpd [ルート@をHTTPD-2.4.39 youxi1] 
[youxi1のhttpd-2.4.39 @ルート]#のCPは/ usr / local / apache2のを.4.39 / binに/のapachectl /etc/init.d/httpd 
[youxi1のhttpd-2.4.39 @ルート]#の/etc/init.d/httpd 
[youxi1のhttpd-2.4.39 @ルート]#カール-I 192.168.5.101 
HTTP / 1.1 200 OK 
日:月、2019年8月5日午前六時56分57秒GMTの
サーバー:IIS / 7.0.0(UNIX)//ここで見ることができますが、IIS / 7.0.0がある
のLast-Modified:月、6月11日18時53分14秒GMT 2007 
のETag: "2D-432a5e4a73a80" 
のAccept-範囲:バイト
のContent-Length:45 
Content-Typeの:テキスト/ HTML

  注意:キーを2行の欠如ので、この時点では、スタートからchkconfigのブートを設定するために使用することはできません以下の設定は、最初から起動するように設定することができた後、

#のVimの/etc/init.d/httpd [youxi1 apache2.4.39 @ルート] 
#/ binに/ SH //は以下の最初の行である、以下の行を追加します!
#1のchkconfig:2345年64 36 //どのシステムでモード、ブートシーケンス、シーケンス閉じ始める
のapache //説明:#説明を
[ルートyouxi1 apache2.4.39 @]#のsystemctlのデーモンリロード//は、 ブートファイルを変更リロードする必要がある
[youxi1 apache2.4.39 @ルート]#chkconfigを --add HTTPD //管理をchkconfigのために追加
[youxi1ルートapache2.4.39 @]#chkconfigを--listのhttpd 
のhttpd 0:1、オフ:2オフ:開口3:4の場合:開口5:開口6:オフ

  そしてまた、モジュールのシステムの種類とバージョン番号を隠されたことがあり

[ルート@ youxi1 apache2.4.39]#のvimのconfに/ httpd.confに
インクルードはconfに/エクストラ/ httpdの-は、default.conf //ライン490、ラインが有効になっているを含める
[ルートyouxi1 apache2.4.39 @]#件のvimのconf /エクストラ/ httpdの-default.conf 
ServerTokensのProd //ライン55、サーバーオペレーティングシステムの種類は表示されません
// 65行ServerSignatureオフを、ウェブサーバモジュールのバージョン番号とバージョン番号が表示されません。あなたはapache2.4前に変更する必要があります。

  設定とビューの結果をリロード

[ルートyouxi1 apache2.4.39 @]#は/etc/init.d/httpd優雅//再起動ができますが、切断されます
。#は、-I 192.168.5.101カール[youxi1 apache2.4.39 @ルート]を
OK HTTP / 1.1 200 
日:月、2019年8月5日7時40分41秒GMTの
サーバー:// IISサーバーは、Webサーバーとバージョン番号の種類を見ることができていない
のLast-Modified:月、2007年6月11日18時53分14秒GMT 
のETag:「2D- 432a5e4a73a80「
受け入れ-範囲:バイト
のContent-Lengthを:45 
のContent-Type:テキスト/ HTML

(3)Apacheを実行しているデフォルトのユーザーを変更します。

  ビューのユーザーは、現在、Apacheを実行しています

#PSはAUX [youxi1 apache2.4.39 @ルート] | グレップののhttpd 
ルート0.0 0.2 74924 2960 1399?SS 14時56午前0時/usr/local/apache2.4.39/bin/httpdの
デーモン0.0 0.4 429424 4724 1702?SL午後3時40分午前0時/usr/local/apache2.4.39/bin/httpdの
デーモン0.0 0.4 363888 4204 1703?SL 15:40 0:00 /usr/local/apache2.4.39/bin/httpdの
デーモン1704 0.0 0.4 363888 4204?SL 15:40 0:00 /usr/local/apache2.4.39/bin/httpdの
ルート1789 0.0 0.0 112724 996のPTS / 0 R + 15:49 0:00のgrep --color =自動車のhttpd

  Apacheを実行しているデフォルトのユーザーを変更します。

[ルート@ youxi1 apache2.4.39]#useraddの-M -s / sbinに/ nologinにapacheの
[ルート@ youxi1 apache2.4.39]#のvimのconfに/ httpd.confの
ユーザーのapache //第167〜168行
グループのapache

  Apacheを再起動し、チェック

[youxi1 apache2.4.39 @ルート]#は優雅な/etc/init.d/httpd         
#PSはAUX [youxi1 apache2.4.39 @ルート] | グレップののhttpd                
ルート0.0 0.2 74924 2968 1399?SS 14時56 0:00 /usr/local/apache2.4.39/bin/httpdの
apacheの1816 0.0 0.4 363888 4204?SL午前15時58分午前0時/usr/local/apache2.4.39/bin/httpdの
apacheの0.0 0.4 363888 4204 1817?SL午前15時58分午前0時/usr/local/apache2.4.39/bin/httpdの
apacheの0.0 0.4 363888 4204 1818?SL 15:58午後12時/usr/local/apache2.4.39/bin/httpdの
ルート1901 0.0 0.0 112724 996のPTS / 0 R + 15:58午後12時のgrep --color =自動車のhttpd

(4)の下でApacheのディレクトリとファイルのパーミッションを変更します。

  htdocsディレクトリは、各所有者の所有グループを変更するメインのApacheウェブストアです

[ルート@ youxi1 apache2.4.39]#1のchownのApache:Apacheのhtdocsに/ -R 
[ルートyouxi1 apache2.4.39 @]#LL -sdのhtdocs / 
0 drwxr-XR-X 2つのアパッチアパッチ24の8月5午前14時23分のhtdocs /

(5)。根のためのApacheのログファイルのパーミッションを保証

  記録Apacheのログは、メインApacheプロセスによって運営され、プロセスがApacheのメインルートユーザが開始されているので、これは出力ログには影響を与えません。これは、レコードをログに記録する最も安全な方法です。

[ルート@ youxi1 apache2.4.39]#1 LLログ/ 
总用量12 
-rw-R - r--の1つのルートルート142 8月5 15:40のaccess_log 
-rw-R - r--の1つのルートルート1142年8月5午前15時58分のerror_log 
-rw-R - r--の1つのルートルート5 8月5午前15時58 httpd.pid 
[ルートyouxi1 apache2.4.39 @]#1 LL -dsログ/ 
0 drwxr-XR-X 2ルートルート58 8月5午前14時56分のログ/

(6)Apacheログ切断CRONLOGを使用

  Apacheサーバは、デフォルトのログファイルは、文書全体を管理したり統計を分析するのは簡単でもない、分割されていません。cronologフィルタは、ログファイルのエントリに標準入力と出力ファイル名のテンプレートから各エントリを読み取り、指定したログファイルと現在の日付と時刻に書かれた簡単なプログラムです。ファイル名の拡張子の変更は、現在のファイルが閉じているときは、新しくオープンしました。cronologやApacheなどのWebサーバー、で使用するように設計され、毎日または毎月のログにアクセスログを分割します。

  インストールCRONLOG

[youxi1 apache2.4.39 @ルート]#yumを-y EPELリリースインストール
[youxi1 apache2.4.39 @ルート]#yumの-y cronologをインストール

  CRONLOGを使用するためのApacheの設定

[ルートyouxi1 apache2.4.39 @]#のvimのconfに/ httpd.confの
// 274、ライン
のErrorLog "|は/ usr / sbinに/ cronolog /usr/local/apache2.4.39/logs/error_%Y%m%d.log" 
// 303行
    のCustomLog "|は/ usr / sbinに/ cronolog /usr/local/apache2.4.39/logs/access_%Y%m%d.log"コンバインド
[youxi1 apache2.4.39 @ルート]#は/ etc / initを。 D / httpdの優雅な使用し
、この時間はすぐにエラー・ログ・ファイルが生成されます。#のLSログ/ // [youxi1 apache2.4.39 @ルート] 
のaccess_log error_logにerror_20190806.log httpd.pid 
-I 192.168.5.101カール[ルート@ youxi1 apache2.4.39]#を
HTTP 200 OK /1.1 
日:火、2019年8月6日午前2時07分23秒GMTの
サーバー:IIS 
のLast-Modified:月曜日、2007年6月11日18時53分14秒GMT 
のETag: "2D-432a5e4a73a80" 
のAccept-範囲:バイト
のContent-Length :45 
のContent-Typeを:text / htmlの
 
[ルート@ youxi1 apache2.4.39]#のLSログ/アクセスログファイルが生成されます最初の//の後にアクセス
access_20190806.logのaccess_log error_20190806.log error_logにhttpd.pid

(7)エラーページ

  オーダー醜いデフォルトのエラーメッセージを避けるために、サイトのユーザーエクスペリエンスを強化するには404403のように表示されます。彼らはきれいになるように、我々は、エラーページを最適化する必要があります。問題、および正しいページにユーザーを導くために必要ではないだけにアクセスするようにユーザーに伝えるエラーページ。

  方法A:カスタムインタフェースに割り当てられました

[@ルートapache2.4.39 youxi1]#のVimのconf / httpd.confの
<ディレクトリ"/usr/local/apache2.4.39/htdocsを"> //、作用線223行の行を追加
    のErrorDocument 404 /404.html 
[ルートはyouxi1 @ apache2.4.39]#エコー "この404.htmlです">のhtdocs / 404.html // テストページ404を作成し
、[ルートyouxi1 apache2.4.39 @]#は/etc/init.d/httpd優雅// リロード

  Windows用のテスト

  方法2:特定のページへのジャンプ

[@ルートapache2.4.39 youxi1]#のVimのconf / httpd.confの
<ディレクトリ"/usr/local/apache2.4.39/htdocs"> 
    のErrorDocument http://www.baidu.com // 404または同一の位置が、パス代わりに、ドメイン名のアドレス外の
[youxi1 apache2.4.39 @ルート]#は/etc/init.d/httpd //優雅なリロードを

  Windowsのテストは、あなたが百度への直接のジャンプを見ることができます

(8)。有効圧縮モジュール

  ウェブサイトのコンテンツの増加やユーザトラフィックの量を増やすと、サイトの帯域幅は、ウェブサイトと一緒にコストを増加させることであり、増加していきます。クライアントは、帯域幅が小さい場合とき、コンテンツの量が増加すると、それはユーザーエクスペリエンスに影響を与えます。だから、これらの二つの考察から、サイトのコンテンツの一部を圧縮しなければならないし、ユーザー経過した後、Win-Winの結果を達成するために、ユーザーのクライアント、二つの側面を解凍します。

  サーバは、帯域幅を節約するために、クライアントのコンテンツへの出力を送信する前に圧縮できるように、DEFLATE出力フィルタを提供して圧縮モジュールを使用するにはApacheのmod_deflateを。その核となるアイデアは、サーバーにファイルを圧縮してから送信し、大幅にファイル転送のサイズを低減することができることです。転送が完了すると、クライアントのブラウザは解凍するコンテンツを再圧縮されます。HTML(PHP)、JS、:特別な状況の場合、その後、すべてのテキストのようなGZIP圧縮、であるべき CSS、XML、TXT ようにと。特別な状況が原因それぞれの負荷を訪問する必要があるため、広告のjsのコードの多くを持っているし、その後の統計情報を実施し、そのサイトのこれらのタグのJSの所有者は、gzip圧縮を経由しない家のいくつかのようなものです。

  また、圧縮モジュールは、帯域幅の消費を減少させるが、ことに注意しますが、CPUの消費量を増加させました。

  インストールをコンパイルするとき、戻りdeflate_module(共有)はDSOにインストールされている場合、戻りdeflate_module(静的)は、一緒にインストールされている場合、デフレートモジュールがインストールされているかどうかを確認するためにコマンドを使用します。

[youxi1 apache2.4.39 @ルート]#/usr/local/apache2.4.39/bin/apachectl -Mは| グレップのデフレート

  注意:インストールには、コンパイル時にコンパイル--enable-デフレートを保つために、DSOモードを翻訳することができ、コンパイルサーバ/ apxsを拡張ツールが増加し、コンパイラの後に、インストール後にメインのApache binディレクトリに使用することができます。

  長時間の使用のapxsツールのインストールデフレートモジュール

#のLS /usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.* [youxi1 apache2.4.39 @ルート] 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.c 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.dep 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.dsp 
/usr/local/src/httpd-2.4 0.39 /モジュール/フィルター/ mod_deflate.exp 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.la 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.lo 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.mak 
/usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.o 
/usr/local/src/httpd-2.4 0.39 /モジュール/フィルター/ mod_deflate.slo 
// - cオプションを使用すると、操作をコンパイルし実行する必要があることを示します。-iオプションは、インストール操作を示しており、サーバのmodulesディレクトリに一つ以上の動的共有オブジェクトをインストールします。
// -オプションは、httpd.confファイルにLoadModuleの行を追加すると、このモジュールを有効にすることを示している、またはこの行が存在する場合に有効になります。
#ビン/ apxsを-CIA /usr/local/src/httpd-2.4.39/modules/filters/mod_deflate.c [youxi1 apache2.4.39 @ルート] 
[ルートyouxi1 @ apache2.4.39]#は、$?エコー
0 
[ルートを@ apache2.4.39 youxi1]#のLSモジュール/ mod_deflate.so 
モジュールが収縮場合モジュール/ mod_deflate.so //は見
[youxi1 apache2.4.39 @ルート]#のvimのconfに/ httpd.confの
LoadFileが/usr/lib64/libz.so //追加
のLoadModuleのdeflate_moduleモジュールは/ mod_deflate.so //行の先頭に行を追加し、行動ライン106 
のdeflateはgrep |のapachectl -M /#ビン[youxi1 apache2.4.39 @ルート] 
これが正常にインストールされ表示さdeflate_module(共有)//をインクルード

  次に、モジュールの構成パラメータを収縮させます

[@ルートapache2.4.39 youxi1]#のVimのconf / httpd.confの
線158が追加された後//、即ちLoadModuleの大部分の後に追加
<のIfModule mod_deflate.c> 
   DeflateCompressionLevel。9 //圧縮レベル、値1 9,9は、圧縮の程度が高いほど、より高いCPU消費、又は6は、一般的に使用され、最も高い。8 
   DEFLATE SetOutputFilterを//圧縮可能
   DeflateFilterNote入力インストリームを//入力ストリーム宣言
   DeflateFilterNote出力OUTSTREAMを//出力ストリーム宣言
   DeflateFilterNote比Ratio //宣言圧縮割合
   AddOutputFilterByTypeディレクティブDEFLATE text / htmlのテキスト/プレーンテキスト/ XMLテキスト/ CSSのアプリケーション/ javascriptの// 圧縮の種類を宣言する
</のIfModule> 
[ルートyouxi1 apache2.4.39 @]#はリロード//優雅を使用し/etc/init.d/httpd 
[ youxi1 apache2.4.39]#のcp CONF @ルート / httpd.confのhtdocsに/ httpd.html //はテストページ生成 
[youxi1 apache2.4.39 @ルート]#LL -hのhtdocs / httpd.html //は、 テストページのサイズを表示します
-rw-R - r--の1つのルートのルート 19Kを8 6 15:47のhtdocs / httpd.html付け 

  360ブラウザプラグインを使用して、この時間はYSlowのは、テストページ(スピードモード)ログインし、YSlowのプラグイン、あなたは元のサイズ19.1K、圧縮後の6.3Kサイズを見ることができるコンポーネントのオプションを開いてインストール。

  注意:本番環境を、画像ファイル形式が小さすぎるため、mod_deflateを有効にし、そのうちのいくつかは、圧縮しないとき、圧力より大きい可能性が高いです。

  text / plainで、テキスト/ HTML、テキスト/ PHP、text / xmlで、テキスト/ CSS、テキスト/ javascriptの、アプリケーション/ XHTML + xmlの、アプリケーション/ xmlの、アプリケーション/ RSS + xmlの、アプリケーション/ atom_xml:すべての種類のファイルを圧縮することができます、アプリケーション/ X-ジャバスクリプト、アプリケーション/ X-HTTPD-PHP、画像/ SVG + XML、画像/ gif形式、画像/ PNG、画像/ JPE、画像/ SWFファイル、画像/ JPEG画像/ BMP。

(9)のWebキャッシュモジュールを有効にします

  mod_deflateをモジュールは、主に帯域幅と削減事業費から会社を保存し、圧縮で有効になっています。より多くのイメージ、スクリプト、CSSやフラッシュがページに埋め込まれているためしかし、顧客の訪問は、サイトはhttpリクエストを何度も行うようにバインドされているとき、私たちはまた、これらのファイルをキャッシュするようにモジュールをキャッシュmod_expiresをでExpiresHeaderを設定することができます。

  訪問するファイルキャッシング時間の特定のタイプを指定することで満了することを介してメッセージのヘッダーにあります。通常、私たちの写真のほとんどは、リリース後のフラッシュは、多くの場合、変更されていないキャッシュツアーを行うことは初めてです後ので、あなたはサーバーからダウンロード後にツアーからではなく、直接サーバーからこれらのファイルをダウンロードする必要はありませんキャッシュをお読みください。高速アクセスページの顧客が大幅に加速するように、企業の帯域幅の圧力も緩和。

  インストールされているモジュールの有効期限が切れた場合は、インストールをコンパイルするときに、戻りexpires_module(共有)はDSOにインストールされている場合(静的)リターンexpires_moduleが、一緒にインストールされているかどうか、確認するためにコマンドを使用します。

[root@youxi1 apache2.4.39]# bin/apachectl -M | grep expires

  注意:编译时安装方法,在编译时跟上--enable-expires即可;DSO方式可以在编译服务器之后编译,也可以在安装完成后使用Apache主目录下的bin/apxs扩展工具编译并增加。

  使用apxs扩展工具安装deflate模块

[root@youxi1 apache2.4.39]# ls /usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.*
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.c
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.dep
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.dsp
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.exp
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.la
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.lo
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.mak
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.o
/usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.slo
//-c选项表明需要执行编译操作;-i选项表明需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录;
//-a选项表明增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者如果此行存在则启用。
[root@youxi1 apache2.4.39]# bin/apxs -cia /usr/local/src/httpd-2.4.39/modules/metadata/mod_expires.c
[root@youxi1 apache2.4.39]# echo $?
0
[root@youxi1 apache2.4.39]# ls /usr/local/apache2.4.39/modules/mod_expires.so
/usr/local/apache2.4.39/modules/mod_expires.so  //查看是否存在expires模块
[root@youxi1 apache2.4.39]# bin/apachectl -M | grep expires
 expires_module (shared)  //显示这个表示安装成功

  接着配置expires模块参数

[root@youxi1 apache2.4.39]# vim conf/httpd.conf
//如果想要全局启用expires模块参数,一样可以在LoadModule大段结束后添加(第158行左右)
//如果只想某个目录配置,可以将expires模块参数加入到对应目录的<Directory></Directory>标签内
//甚至可以针对虚拟主机配置,将expires模块参数加入到对应虚拟主机的<VirtualHost></VirtualHost>标签内
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 12 month"
    ExpiresByType text/html "access plus 12 months"
    ExpiresByType text/css "access plus 12 months"
    ExpiresByType image/gif "access plus 12 months"
    ExpiresByType image/jpeg "access plus  12 months"
    ExpiresByType image/jpg "access plus 12 months"
    ExpiresByType image/png "access plus 12 months"
    EXpiresByType application/x-shockwave-flash "access plus 12 months"
    EXpiresByType application/x-javascript "access plus 12 months"
    ExpiresByType video/x-flv "access plus 12 months"
</IfModule>
[root@youxi1 apache2.4.39]# /etc/init.d/httpd graceful  //重新加载

参数说明:

  ExpiresDefault "<base> [plus] {<number> <type>}"

  ExpiresByType "<base> [plus] {<number> <type>}"

  <base>的参数有3个:access,now(等价于‘access’),modification(最后修改日期)

  plus(加上)关键字是可选的。

  <num>必须是整数,确保可以atoi()所接收。(atoi可以把字符串转换成长整型数)

  <type>参数类型:years,months,weeks,days,hours,minutes,seconds

注意:如果你使用基于最后修改日期的设置,“Expires”头将不会被添加到那些并非来自于硬盘文件的内容,这是因为这些内容并不存在“最后修改时间”的属性。基准时刻可以是源文件的最后修改时刻或者客户端对源文件的访问时刻,至于使用那一个则由<code>指定。“M”表示源文件的最后修改时刻,“A”表示客户端对源文件的访问时刻,需要注意的是<code>和seconds之间没有空格。这两个基准的差别是很微妙的。如果使用“M”,所有当前缓存中的文档副本都将在同一时刻过期,这个可能对定期更新的URL(比如位于同一位置的每周通告)很有好处。如果使用“A”,则每个客户端所得到的有效期是不一样的,这个可能对那些几乎不更新的图片很有好处,特别是对于一组都引用相同图片的相关文档。

  再次使用360浏览器打开测试页面,然后打开YSLOW,可以看到出现缓存时间了,时间到2020年7月31日。

  缓存的优点:1.缩短服务的响应时间;2.减轻服务器负担;3.减少网络带宽使用量,降低企业成本。

  缓存的缺点:由于使用了缓存设置,导致被缓存的内容更新了,但是客户看到的却还是旧的。针对此缺点可以缩短缓存时间(例如1天)或对缓存的对象改名。

(10).启用长链接

  打开长链接后,会保持连接,减少三次握手,但是会消耗内存。是否打开,取决于单位时间内是否进行多次连接(三次握手),一个连接有多次请求的,建议打开,并适当调整KeepAliveTimeout时间。

  在Apache的httpd.conf中,KeepAlive指的是保持连接活跃,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。当然KeepAlive的连接活跃时间受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。

  所以,一般情况下,图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。如果KeepAliveTimeOut设置的时间过短,例如设置为1秒,那么APACHE就会频繁的建立新连接,当然会耗费不少的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么APACHE中肯定有很多无用的连接会占用服务器的资源,也不是一件好事。所以,到底要把KeepAliveTimeOut设置为多少,要看网站的流量、服务器的配置而定。

  修改长链接配置

[root@youxi1 apache2.4.39]# vim conf/httpd.conf
Include conf/extra/httpd-default.conf  //启用这一行,搜索一下吧,大概在第500行左右
[root@youxi1 apache2.4.39]# vim conf/extra/httpd-default.conf
Timeout 60  //第10行,接收一个GET的请求时间;POST或PUT请求时接收两个TCP包之间的时间;应答TCP包传输中两个ACK包之间的时间。默认10
KeepAlive On  //第16行,默认是开启的
MaxKeepAliveRequests 100  //第23行,一个长链接的最大请求数,超过将会断开重新连接,默认100 KeepAliveTimeout 30  //第29行,修改下超时时间,单位秒,默认5秒

  

おすすめ

転載: www.cnblogs.com/diantong/p/11304095.html