ホームページ >運用・保守 >Apache >複数のWebサイトのApacheで仮想ホストを作成するにはどうすればよいですか?

複数のWebサイトのApacheで仮想ホストを作成するにはどうすればよいですか?

Robert Michael Kim
Robert Michael Kimオリジナル
2025-03-11 17:21:16550ブラウズ

この記事では、複数のWebサイトのApache仮想ホストの構成をガイドします。 creating< virtualhost> Servername、ServerAlias、およびDocumentRootを指定するブロックと、ディレクトリアクセス許可などのセキュリティ上の考慮事項、

複数のWebサイトのApacheで仮想ホストを作成するにはどうすればよいですか?

複数のWebサイトのApacheで仮想ホストを作成する方法

Apacheで仮想ホストを作成すると、単一のサーバーから複数のWebサイトをホストできます。これは、着信要求のドメイン名またはIPアドレスに基づいて異なる応答を行うようにApacheを構成することによって達成されます。これが段階的なガイドです:

  1. Apache構成ファイルの編集:このファイルの場所は、オペレーティングシステムとApacheのインストールによって異なります。一般的な場所には/etc/apache2/apache2.conf apache2.conf(debian/ubuntu)、 /etc/httpd/conf/httpd.conf (red hat/centos)、または/etc/httpd/conf/extra/httpd-vhosts.confルート特権を持つテキストエディターを使用します(Linuxのsudo nanoなど)。
  2. 仮想ホストを定義します:構成ファイル内で、各Webサイトに<virtualhost></virtualhost>ブロックを追加します。各ブロックは、特定の仮想ホストの設定を定義します。基本的な例は次のようになります:
 <code class="apache"><virtualhost> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com <directory> AllowOverride All Require all granted </directory> </virtualhost></code>
  • ServerName :この仮想ホストの主要なドメイン名。
  • ServerAlias :この仮想ホストを指す代替ドメイン名。
  • DocumentRoot :Webサイトのファイルを含むディレクトリ。このディレクトリが存在することを確認してください。
  • <directory></directory> :DocumentRootディレクトリの権限を指定します。 AllowOverride All使用すると、 .htaccessファイルがいくつかの設定をオーバーライドできますが、すべてRequire all granted生産環境でAllowOverride All注意を払ってください。
  1. 各Webサイトで繰り返します:ホストするWebサイトごとに個別の<virtualhost></virtualhost>ブロックを作成し、それに応じてServerNameServerAlias 、およびDocumentRoot変更します。
  2. 仮想ホストを有効にする:構成を追加した後、それらを有効にする必要があります。このプロセスは、システムによって異なります。 Debian/ubuntuでは、 a2ensite example.comexample.comをサイトの名前に置き換える)を使用して、 sudo systemctl reload apache2を使用できます。 Red Hat/Centosでは、 sudo systemctl restart httpdを使用してapacheを再起動する必要がある場合があります。
  3. DNSの構成:重要なことに、ドメイン名をサーバーのIPアドレスに向けるようにDNSレコードを構成する必要があります。

Apacheで複数の仮想ホストを設定する際のセキュリティ上の考慮事項は何ですか?

単一のサーバーで複数のWebサイトをホストする場合、セキュリティが最重要です。主な考慮事項は次のとおりです。

  • ディレクトリアクセス:各仮想ホストのDocumentRoot Directoriesへのアクセスを制限します。不正アクセスまたは変更を防ぐために、適切なファイル許可(例:ディレクトリのchmod 755およびファイルのchmod 644 )を使用します。 777のような過度に許容される設定は避けてください。
  • .htaccessファイル:便利ですが、 .htaccessファイルは、慎重に管理されていなければ、セキュリティの脆弱性を導入できます。可能であれば使用を避け、それらを使用する必要がある場合は、 AllowOverrideを介して許可されている指令を慎重に確認および制限してください。
  • 通常のセキュリティの更新: Apacheサーバーと関連するすべてのソフトウェア(PHP、MySQLなど)を最新のセキュリティパッチで更新します。スタックのどの部分でも脆弱性は、サーバー全体を損なう可能性があります。
  • ファイアウォール:ファイアウォールを使用して、必要なポートのみへのアクセスを制限します(通常、HTTPの場合はポート80、HTTPSで443)。不要な着信接続をブロックします。
  • SSL/TLS証明書:すべてのWebサイトにHTTPSを使用して、サーバーとクライアント間の通信を暗号化します。 Let's Encryptのような評判の良い認証局(CA)からSSL/TLS証明書を取得します。
  • 定期的なセキュリティ監査:定期的なセキュリティ監査を実行して、潜在的な脆弱性を特定して対処します。

Apacheの各仮想ホストのさまざまなポートとドメインを構成するにはどうすればよいですか?

<virtualhost></virtualhost>ディレクティブ内の各仮想ホストのさまざまなポートとドメインを簡単に構成できます。

別のポートを使用するには、 VirtualHost宣言の*後に指定します。たとえば、仮想ホストにポート8080を使用するには:

 <code class="apache"><virtualhost> ServerName example.com:8080 # ... other directives ... </virtualhost></code>

example.com:8080を使用して、クライアントはこのWebサイトにアクセスする必要があることに注意してください。標準以外のポートの使用は、HTTPSが一般的であるため、一般的にはあまり一般的ではありません。ただし、テストや特定のアプリケーションに役立ちます。

さまざまなドメインを使用するには、最初のセクションに示すように、 ServerNameおよびServerAliasディレクティブでそれらを指定するだけです。 Apacheは、着信要求のホストヘッダーと一致して、使用する仮想ホストを決定します。これが標準的で優先される方法です。

Webサイトごとに異なるPHPバージョンを持つApache仮想ホストを使用できますか?

はい、Webサイトごとに異なるPHPバージョンを持つApache仮想ホストを使用できます。これには通常、複数のPHPインストールを使用し、Apacheを構成して各仮想ホストに適切なPHPハンドラーを使用します。

正確な方法は、システムとPHPのインストール方法によって異なります。一般的なアプローチには次のものがあります。

  • 複数のPHPインストール: PHPの複数のバージョンをインストールします(例:PHP 7.4およびPHP 8.1)。次に、各仮想ホストに別のPHPハンドラー( mod_phpphp-fpmなど)を使用するようにApacheを構成し、正しいPHP実行可能ファイルへのパスを指定します。
  • PHP-FPM: PHP-FPM(FastCGIプロセスマネージャー)は、複数のPHPバージョンを管理するために好まれることがよくあります。各PHPバージョンの個別のPHP-FPMプールを構成し、各仮想ホストに正しいプールを使用するようにApacheに指示します。これには、プールを作成するようにPHP-FPM自体を構成する必要があります。
  • suexec (セキュリティの向上): suexecを使用すると、各仮想ホストのPHPスクリプトを別のユーザーアカウントで実行することでセキュリティを強化します。これにより、1つの侵害されたWebサイトが他のWebサイトに影響を与えることができなくなります。

これらのセットアップを構成するには、サーバーの環境とPHP構成に詳細と精通に注意する必要があります。詳細な手順については、システムのドキュメントとPHP-FPMドキュメントを参照してください。一般に、基本的な仮想ホストのセットアップよりも複雑です。

以上が複数のWebサイトのApacheで仮想ホストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。