ホームページ  >  記事  >  バックエンド開発  >  Apacheの設定を詳しく解説(最強のAPACHE設定チュートリアル)_PHPチュートリアル

Apacheの設定を詳しく解説(最強のAPACHE設定チュートリアル)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:36:46924ブラウズ

メインサイトの構成 (基本構成)
(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 allowed,deny
Allow from all
上記のディレクトリ属性の設定には、主に次のオプションがあります:
オプション: 特定のディレクトリで使用される機能を設定します。 共通の値と基本的な意味は次のとおりです:
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: マルチプロセッシング モジュール)
apache2 の主な利点は、以下のサポートが優れていることです。 --with-mpm オプションを使用して、apache2 の動作モードを決定します。現在の 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 #サーバーの起動時に開始される子プロセスの数
StartThreads 5 #各子プロセス起動時に開始されるスレッドの数
MinSpareThreads 5 #メモリ内のアイドルスレッドの最小数
MaxSpareThreads 10 #アイドルスレッドの最大数
MaxThreadsPerChild 2000 #終了するまでに各スレッドをリクエストできる最大回数。 0 は制限されません。
MaxRequestsPerChild 10000 #再フォークされる前に各子プロセスが処理される回数。 0 は制限がないことを意味します。

このモードでは、子プロセスの数は固定されており、スレッドの数は制限されません。クライアントがサーバーに接続すると、アイドル状態のスレッドがサービスを提供します。 アイドル状態のスレッドの数が十分でない場合、子プロセスは新しい接続を提供するためにスレッドを自動的に生成します。このモードはマルチサイト サーバーに使用されます。
(3) HTTP 戻り情報の設定:
ServerTokens Prod #このパラメーターは、http ヘッダーによって返される Apache のバージョン情報を設定します。 利用可能な値と意味は次のとおりです:
Prod: ソフトウェア名のみ。例: apache
Major: メジャー バージョン番号を含む (例: apache/2)
Minor: マイナー バージョン番号が含まれる (例: apache/2.0)
Min: Apache の完全なバージョン番号のみ (例: apache/2.0.54)
OS: オペレーティング システムのタイプが含まれます。例: apache/2.0 .54 (Unix)
完全: 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/ を入力できます。
オプション インデックス MultiViews
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 (ユーザーのホームページは、ユーザーのホーム ディレクトリの下の public_html ディレクトリに保存されます。URL http://www.jb51.net/~bearzhang/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 common

形式のパラメータは次のとおりです:
%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 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"
) 自己署名証明書を作成して使用します:
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 server.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 server.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/

http://www.bkjia.com/PHPjc/322093.html

tru​​ehttp://www.bkjia.com/PHPjc/322093.html技術記事メインサイトの構成(基本構成) (1) 基本構成:ServerRoot "/mnt/software/apache2" #Apache ソフトウェアがインストールされている場所。他の指定ディレクトリに絶対パスが指定されていない場合、ディレクトリは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。