ホームページ > php教程 > php手册 > Apache 設定の詳細な説明 (最高の APACHE 設定チュートリアル)

Apache 設定の詳細な説明 (最高の APACHE 設定チュートリアル)

WBOY
リリース: 2016-06-13 12:15:18
オリジナル
938 人が閲覧しました

メインサイトの構成 (基本構成)
(1) 基本構成:
ServerRoot "/mnt/software/apache2" #Apache ソフトウェアがインストールされている場所。他の指定されたディレクトリに絶対パスが指定されていない場合、ディレクトリはこのディレクトリからの相対パスになります。
PidFile logs/httpd.pid #最初の httpd プロセス (他のすべてのプロセスの親プロセス) のプロセス番号ファイルの場所。
Listen 80 #サーバーがリッスンするポート番号。
ServerName www.jb51.net:80 #メインサイト名 (Web サイトのホスト名)。
ServerAdmin admin@jb51.net #管理者の電子メール アドレス。
DocumentRoot "/mnt/web/clusting" #メイン サイトの Web ページの保存場所。

メイン サイトのディレクトリのアクセス制御は次のとおりです:

Options FollowSymLinks
AllowOverride None
Order allow,deny
すべてから許可

上記のディレクトリ属性の設定には、主に次のオプションがあります:
オプション: 特定のディレクトリで使用される機能を設定します。値と基本 意味は次のとおりです:
ExecCGI: このディレクトリでの CGI スクリプトの実行が許可されます。
FollowSymLinks: ファイル システムがこのディレクトリ内のシンボリック リンクを使用できるようにします。
インデックス: ユーザーがディレクトリにアクセスしたときに、DirectoryIndex で指定されたホームページ ファイル (index.html など) が見つからない場合、ディレクトリ内のファイル リストがユーザーに返されます。
SymLinksIfOwnerMatch: シンボリック リンクを使用する場合、シンボリック リンクのファイル所有者が実際のファイルの所有者と同じである場合にのみアクセスが可能です。
その他の使用可能な値と意味については、http://www.jb51.net/Apache/ApacheManual/mod/core.html#options を参照してください。

AllowOverride: に存在するディレクティブ タイプを許可します。 .htaccess ファイル (.htaccess ファイル名は変更可能で、そのファイル名は AccessFileName ディレクティブによって決定されます):
None:AllowOverride が None に設定されている場合。このディレクトリで .htaccess ファイルを検索しないでください (サーバーのオーバーヘッドを軽減できるため)。
すべて: すべてのディレクティブを .htaccess ファイルで使用できます。
その他の利用可能な値と意味 (オプション FileInfo AuthConfig Limit など) については、次を参照してください: http://www.jb51.net/Apache/ApacheManual/mod/core.html#AllowOverride
順序: 2 つのアクセス ルールの許可または拒否のどちらがアクセス中に優先されるかを制御します:
許可: アクセスが許可されるホストのリスト (利用可能なドメイン名またはサブネット、例: 192.168.0.0/16 から許可) 。
拒否: アクセスを拒否されたホストのリスト。
詳しい使用方法については、http://www.jb51.net/Apache/ApacheManual/mod/mod_access.html#order
DirectoryIndexindex.htmlindex.htmindex.php#ホームページファイルを参照してください。設定 (この例では、ホームページ ファイルは、index.html、index.htm、index.php に設定されています)

(2) サーバーの最適化 (MPM: Multi-Processing Modules)
メインapache2 の利点は、プロセッサのサポートが向上し、コンパイル時に apache2 の動作モードを決定するために --with-mpm オプションが使用されることです。現在の apache2 がどのような動作メカニズムを使用しているかがわかっている場合は、httpd -l コマンドを使用して Apache のすべてのモジュールをリストし、それがどのように機能するかを知ることができます:
prefork: httpd -l が prefork.c をリストする場合、次のことが必要です。次のセクション構成を変更します:

StartServers 5 #Apache の起動時に開始される httpd プロセスの数。
MinSpareServers 5 #サーバーによって維持されるアイドルプロセスの最小数。
MaxSpareServers 10 #サーバーによって維持されるアイドル プロセスの最大数。
MaxClients 150 #同時接続の最大数。
MaxRequestsPerChild 1000 # 各子プロセスが強制終了されるまでにサービスが要求される回数。 0 は制限がないことを意味し、1000 に設定することをお勧めします。


この動作モードでは、サーバーの起動後に 5 つの httpd プロセスが開始されます (ps -ax|grep httpd で確認できる親プロセスを含む合計 6 つ)。指示)。ユーザーが接続すると、Apache はアイドル プロセスを使用して接続を提供し、親プロセスは子プロセスをフォークします。メモリ内のアイドル プロセスの数が MaxSpareServers に達するまで。このモードは、一部の古いバージョンのプログラムとの互換性を目的としています。私のデフォルトのコンパイル時オプション。
worker: httpd -l が worker.c をリストする場合、次のセクションを設定する必要があります:

StartServers 2 #Apache の起動時に開始される httpd プロセスの数。
MaxClients 150 #同時接続の最大数。
MinSpareThreads 25 #サーバーによって維持されるアイドル スレッドの最小数。
MaxSpareThreads 75 #サーバーによって維持されるアイドル スレッドの最大数。
ThreadsPerChild 25 #各子プロセスによって生成されるスレッドの数。
MaxRequestsPerChild 0 # 各子プロセスが強制終了されるまでにサービスが要求される回数。 0 は制限がないことを意味し、1000 に設定することをお勧めします。


このモードでは、スレッドを使用してクライアント接続を監視します。新しいクライアントが接続すると、アイドル状態のスレッドの 1 つが接続を受け入れます。サーバーは起動時に 2 つのプロセスを開始し、各プロセスによって生成されるスレッドの数は固定されている (ThreadsPerChild によって決定される) ため、起動時には 50 のスレッドが存在します。 50 スレッドでは不十分な場合、サーバーは自動的にプロセスをフォークし、さらに 25 スレッドを生成します。

perchild: httpd -l が perchild.c をリストする場合は、次のセクションを構成する必要があります:

NumServers 5 #サーバーの起動時に開始される子プロセス Number
StartThreads 5 #各子プロセスの開始時に開始されるスレッドの数
MinSpareThreads 5 #メモリ内のアイドル スレッドの最小数
MaxSpareThreads 10 #アイドル スレッドの最大数
MaxThreadsPerChild 2000 #最大各スレッドのアイドル スレッドの数 終了するまでにリクエストする回数。 0 は制限されません。
MaxRequestsPerChild 10000 #再フォークされるまでに各子プロセスが処理される回数。 0 は制限がないことを意味します。

このモードでは、子プロセスの数は固定されており、スレッドの数は制限されません。クライアントがサーバーに接続すると、アイドル状態のスレッドがサービスを提供します。 アイドル状態のスレッドの数が十分でない場合、子プロセスは新しい接続を提供するためにスレッドを自動的に生成します。このモードはマルチサイト サーバーに使用されます。
(3) HTTP 戻り情報の設定:
ServerTokens Prod #このパラメーターは、http ヘッダーによって返される Apache のバージョン情報を設定します。 使用可能な値と意味は次のとおりです。
Prod: ソフトウェア名のみ。例: apache
メジャー: メジャー バージョン番号が含まれます。例: apache/2
マイナー: マイナー バージョン番号が含まれます。例: apache/2.0
Min: の完全なバージョン番号のみ。 apache、例: apache/2.0.54
OS: オペレーティング システムのタイプが含まれます。例: apache/2.0.54 (Unix)
Full: 例: Apache でサポートされるモジュールとモジュールのバージョン番号が含まれます。 : Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL /0.9.7g
ServerSignature Off #ページでエラーが発生したときにサーバーのバージョン情報を表示するかどうか。推奨設定はオフです

(4) 永続接続設定
KeepAlive On #永続接続機能をオンにします。つまり、クライアントがサーバーに接続すると、データのダウンロード後も接続が維持されます。
MaxKeepAliveRequests 100 #接続サービスのリクエストの最大数。
KeepAliveTimeout 30 #接続を継続する時間。接続が再度データを要求しない場合、接続は切断されます。デフォルトは 15 秒です。
エイリアスの設定
DocumentRoot で指定されたディレクトリにないページの場合は、シンボリック接続またはエイリアスのいずれかを使用できます。エイリアスの設定は以下の通りです:
Alias /download/ "/var/www/download/" #アクセス時に入力可能: http://www.jb51.net/download/
<ディレクトリ"/var/www /download"> #ディレクトリのアクセス制御設定を構成します
オプション インデックス マルチビュー
AllowOverride AuthConfig
順序許可、拒否
すべてから許可


CGI 設定
ScriptAlias /cgi-bin/ "/mnt/software/apache2/cgi-bin/" # アクセス時: http://www.jb51.net/cgi-bin/ 。ただし、このディレクトリ内の CGI スクリプト ファイルには実行権限が必要です。
<ディレクトリ "/usr/local/apache2/cgi-bin"> #ディレクトリのプロパティを設定
AllowOverride なし
オプション なし
順序許可、拒否
すべてから許可


個人ホームページ設定 (public_html)
UserDir public_html (ユーザーのホームページは、ユーザーのホーム ディレクトリ URL http://www.jb51.net/~ bearzhang の下の public_html ディレクトリに保存されます/file.html は /home/bearzhang/public_html/file.html ファイルを読み取ります)
chmod 755 /home/bearzhang #他のユーザーがファイルを読めるようにします。
UserDir /var/html (URL http://www.jb51.net/~bearzhang/file.html は /var/html/bearzhang/file.html となります)
UserDir /var/www/ * /docs (URL http://www.jb51.net/~bearzhang/file.html は /var/www/bearzhang/docs/file.html となります)
ログ設定
(1) エラーログ設定
ErrorLog logs/error_log #ログの保存場所
LogLevel warn #ログレベル
表示形式は以下のとおりです。
[Mon Oct 10 15:54:29 2005] [error ] [client 192.168. 10.22] /download/ へのアクセスに失敗しました。理由: ユーザー管理者にアクセスが許可されていません
(2) アクセス ログの設定
ログのデフォルトの形式は次のとおりです:
LogFormat "%h %l %u % t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" を組み合わせた
LogFormat "%h %l %u %t "%r " %>s %b" common #common はログ形式名です。
LogFormat "%{Referer}i -> %U" リファラー
LogFormat "%{User-agent}i" エージェント
CustomLog logs/access_log の共通

形式は次のとおりです:
%h -- クライアントの IP アドレスまたはホスト名
%l -- これは、クライアントの identd によって決定される RFC 1413 ID です。出力内の「-」記号は、ここでの情報が無効であることを示します。
%u -- HTTP 認証システムによって取得された Web ページにアクセスしたクライアントの名前。認証がある場合にのみ有効です。出力内の「-」記号は、ここでの情報が無効であることを示します。
%t – サーバーがリクエストの処理を完了した時刻。
"%r" -- 引用符は、顧客から送信されたリクエストの内容であり、多くの有益な情報が含まれています。
%>s -- これはサーバーからクライアントに返されるステータス コードです。
%b -- 最後の項目は、応答ヘッダーを除いてクライアントに返されるバイト数です。
"%{Referer}i" -- この項目は、リクエストが送信された Web ページを指定します。
"%{User-Agent}i" -- この項目は、お客様のブラウザから提供されるブラウザ識別情報です。
下面是一段访问日志的实例:
192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 -
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 -
各参数的详细解释,请参阅:http://www.jb51.net/Apache/ApacheManual/logs.html

用户认证的配置
(1)in the httpd.conf:
AccessFileName .htaccess
.........
Alias /download/ "/var/www/download/"

Options Indexes
AllowOverride AuthConfig

(2) create a password file:
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang
(3)onfigure the server to request a password and tell the server which users are allowed access.
vi /var/www/download/.htaccess:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/httpuser/passwords
Require user bearzhang
#Require valid-user #all valid user
虚拟主机的配置
(1)基于IP地址的虚拟主机配置
Listen 80

DocumentRoot /www/example1
ServerName www.example1.com


DocumentRoot /www/example2
ServerName www.example2.org


(2) 基于IP和多端口的虚拟主机配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080

DocumentRoot /www/example1-80
ServerName www.example1.com


DocumentRoot /www/example1-8080
ServerName www.example1.com


DocumentRoot /www/example2-80
ServerName www.example1.org


DocumentRoot /www/example2-8080
ServerName www.example2.org

(3)单个IP地址的服务器上基于域名的虚拟主机配置:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

DocumentRoot /www/example1
ServerName www.example1.com
ServerAlias example1.com. *.example1.com
# Other directives here


DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here

(4)在多个IP地址的服务器上配置基于域名的虚拟主机:
Listen 80
# This is the "main" server running on 172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver
# This is the other address
NameVirtualHost 172.20.30.50

DocumentRoot /www/example1
ServerName www.example1.com
# Other directives here ...


DocumentRoot /www/example2
ServerName www.example2.org
# Other directives here ...

(5)在不同的端口上运行不同的站点(基于多端口的服务器上配置基于域名的虚拟主机):
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

ServerName www.example1.com
DocumentRoot /www/domain-80


ServerName www.example1.com
DocumentRoot /www/domain-8080


ServerName www.example2.org
DocumentRoot /www/otherdomain-80


ServerName www.example2.org
DocumentRoot /www/otherdomain-8080

(6)基于域名和基于IP的混合虚拟主机的配置:
Listen 80
NameVirtualHost 172.20.30.40

DocumentRoot /www/example1
ServerName www.example1.com


DocumentRoot /www/example2
ServerName www.example2.org


DocumentRoot /www/example3
ServerName www.example3.net


SSL加密的配置
首先在配置之前先来了解一些基本概念:
証明書の概念: まずルート証明書が必要であり、次にそのルート証明書を使用してサーバー証明書とクライアント証明書が発行されます。サーバー証明書とクライアント証明書は水平的な関係にあると一般に理解されています。 SSL は認証のためにサーバー証明書をインストールする必要があります。 したがって、この環境では、ルート証明書、サーバー証明書、クライアント証明書の少なくとも 3 つの証明書が必要です。 通常、証明書を生成する前に秘密キーがあり、その秘密キーを使用して証明書要求が生成され、証明書サーバーのルート証明書を使用して証明書が発行されます。
SSL で使用される証明書は、自分で生成することも、商用 CA (Verisign や Thawte など) によって署名することもできます。
証明書の発行に関する問題: 商用証明書を使用している場合は、特定の署名方法について関連する販売者の指示を確認してください。親しい友人が発行した証明書の場合は、CA.sh スクリプト ツールを使用できます。それはopensslに付属しています。
個別のクライアントに証明書を発行しない場合、クライアントとサーバーは同じ証明書を生成する必要はありません。
(1) conf/ssl.conf 設定ファイルの主なパラメータは次のように設定されます。
Listen 443
SSLPassPhraseDialog buildin
#SSLPassPhraseDialog exec:/path/to/program
SSLSessionCache dbm:/ usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/usr/local/apache2/logs/ssl_mutex

# の一般的なセットアップ仮想ホスト
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog /usr/local/apache2/logs/ error_log
TransferLog /usr/local/apache2/logs/access_log
SSLCipherSuite 上の SSLEngine ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP: eNULL
SSLCertificateFile /usr/ local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

(2) 自己署名証明書を作成して使用します。
a. Apache サーバーの RSA 秘密キーを作成します
/usr/local/openssl/bin/openssl genrsa -des3 -out /usr/local/apache2/conf/ssl.key/server.key 1024
b. 作成します。証明書署名要求 (CSR)
/usr/local/openssl/bin/openssl req -new -key /usr/local/apache2/conf/ssl.key/server.key -out /usr/local/apache2/ conf/ssl.key/server.csr
c. CA の RSA キーを使用して自己署名 CA 証明書 (X509 構造) を作成します
/usr/local/openssl/bin/openssl req -x509 -days 365 -key / usr/local/apache2/conf/ssl.key/server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl。 crt/server. crt
/usr/local/openssl/bin/openssl genrsa 1024 -out server.key
/usr/local/openssl/bin/openssl req -new -key server.key -out サーバー。 csr
/usr/local/openssl/bin/openssl req -x509 -days 365 -keyserver.key -inserver.csr -outserver.crt
(3) 独自の CA (証明書) を作成して使用しますCA がサーバーの証明書に署名します。
mkdir /CA
cd /CA
cp openssl-0.9.7g/apps/CA.sh /CA
./CA.sh -newca
openssl genrsa -des3 -out サーバー。 key 1024
openssl req -new -key server.key -out server.csr
cp server.csr newreq.pem
./CA.sh -sign
cp newcert.pem /usr/local /apache2/conf/ssl.crt/server.crt
cp server.key /usr/local/apache2/conf/ssl.key/

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート