ホームページ php教程 php手册 Apache でのサーバー仮想ホストのセットアップの概要

Apache でのサーバー仮想ホストのセットアップの概要

Jun 21, 2016 am 09:01 AM
apache com home

1. WWW サーバー仮想ホストの原理

WWW サーバー仮想ホストとは、1 台の物理マシンを複数のホスト名の WWW サーバーとして使用することを指します。たとえば、1 台のマシンが http://www.company1.com、http://www.company2.com などの WWW サービスを提供しますが、これらの WWW サイトを閲覧するユーザーは、このように異なるマシンが使用されているとは感じられません。さまざまなサービスを提供する場合の違いは何ですか。

WWW 仮想ホストを使用する利点は、一部の小規模な Web サイトでは、同じ物理マシンを他の Web サイトと共有することでシステムの運用コストを削減し、管理の困難さを軽減できることです。また、個人ユーザーもこの仮想ホスティング方式を利用して独自のドメイン名でWWWサーバーを構築することができ、現在国内の多くの企業がこのサービスを無料で提供しています。

WWW 仮想ホストには 2 つの動作モードがあります:

1.1 IP アドレスに基づく仮想ホスト モード

このモードでは、異なるホスト名が異なる IP アドレスに解決され、仮想これらの IP アドレスが提供されます。ホスト サービス マシンにも設定されます。サーバーは、ユーザーのさらなる処理要求の宛先 IP アドレスに基づいて、ユーザーがどの仮想ホスト サービスを要求しているかを判断します。

欠点: IP アドレスに基づく仮想ホスト方式では、仮想ホスト サービスを提供するマシン上に複数の IP アドレスを設定する必要があるため、IP アドレスが無駄になるだけでなく、1 台のマシンが収容できる仮想ホストの数も制限されます。したがって、この方法はますます使用されなくなりました。ただし、この方法は、初期の HTTP 1.0 プロトコルでサポートされている唯一の仮想ホスト方法です。

1.2 ホスト名ベースの仮想ホスト方式

IP アドレスベースの仮想ホスト方式には上記の欠点があるため、HTTP 1.1 プロトコルではホスト名ベースの仮想ホストのサポートが追加されています。具体的には、クライアント プログラムが WWW サーバーにリクエストを行うとき、クライアントがアクセスしたいホスト名も、リクエスト ヘッダーの「Host:」ステートメントを通じて WWW サーバーに渡されます。たとえば、www.company1.com と www.company2.com はどちらも同じ IP アドレスに対応しており (つまり、同じマシンがこれら 2 つの仮想ドメイン名にサービスを提供します)、クライアント プログラムは http://www にアクセスする必要があります。 .company1.com/index.html、送信されるリクエスト ヘッダーには次の内容が含まれます:

GET /index.html HTTP/1.1

ホスト: www.company1.com

…..

WWW サーバープログラムはこのリクエストを受信すると、「Host:」ステートメントをチェックすることでクライアント プログラムがどの仮想ホスト サービスをリクエストしているかを判断し、さらに処理を続行します。

利点: 仮想ホスト サービスを提供するマシンに IP アドレスが設定されている限り、理論的には無数の仮想ドメイン名にサービスを提供でき、占有リソースが少なく、管理が容易です。現在、この方式は基本的に仮想ホスティング サービスを提供するために使用されます。

欠点: 以前の HTTP 1.0 バージョンでは使用できません。実際、現在使用されているブラウザは基本的にホスト名に基づく仮想ホスト方式をサポートしています。

2. Apache サーバーでの仮想ホスト設定技術

2.1 Apache WWW サーバーの概要

Apache WWW サーバーは、現在、世界で最も広く使用されている WWW サーバー ソフトウェアです。インターネット。柔軟な構成により、必要なほぼすべての機能を実現できます。この記事では主にApache上で各種仮想ホストを設定する方法を紹介します。

2.2 Apache WWW サーバーでの IP アドレスに基づく仮想ホスト設定

この仮想ホスト方式を使用するには、まずサーバー上の各仮想ホストに IP アドレスを設定する必要があります。これらの IP アドレスは、複数のネットワーク カードを追加するか、1 つのネットワーク カードに複数の IP アドレスを設定することによって実現できます。複数の IP アドレスを取得した後、次の 2 つの方法のいずれかを使用して Apache をセットアップできます。

2.2.1 仮想ホストごとに Apache のコピーを 1 つ実行する

この方法では、各 Apache プログラムを次のように実行できます。個別のユーザーなので、各仮想ホストは相互に影響を与えません。この種の仮想ホストを設定する場合、各 Apache に対して設定ファイルを設定するだけで済みます。唯一注意する必要があるのは、「Listen」ステートメントを使用して各 Apache をその上でのみ実行するように強制することです。 「独自の」IP アドレスでサービス要求を受信します。

利点: 各仮想ホストは相互に干渉せず、高いセキュリティを備えています。

欠点: より多くのシステムリソースを消費します。

2.2.2 複数の仮想ホストが同じ Apache を共有する

このように、各仮想ホストは同じ Apache を共有するため、各仮想ホスト間に一定の影響があり、特に CGI プログラムの実行時に、いくつかの重大なセキュリティ問題。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可:

<ccid_code><VirtualHost www.company1.com>; DocumentRoot /home/company1 … </VirrualHost>;</ccid_code>
ログイン後にコピー

优点:占用系统资源比上一种方式少。

缺点:安全性低,每个虚拟主机仍然需要占用一个IP地址。

2.3 Apache WWW服务器下简单的基于名字的虚拟主机设置

这种方式下,各个虚拟主机共享同一份Apache,因此有CGI程序运行时,安全性也不高。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可

<ccid_code>NameVirtualHost 111.222.33.44 ; 在这个IP地址接收虚拟主机的服务 <VirtualHost 111.222.33.44>; ServerName www.company1.com DocumentRoot /www/company1 </VirtualHost>; <VirtualHost 111.222.33.44>; ServerName www.company2.com DocumentRoot /www/company2 </VirtualHost>;</ccid_code>
ログイン後にコピー

优点:只要一个IP地址就可以提供大量的虚拟主机服务。

缺点:安全性差。维护这些虚拟主机时需要更改配置文件,并且需要重新启动Apache进程才能起作用。因此不适合进行大规模的虚拟主机服务。

2.4 Apache WWW服务器下基于名字的大规模虚拟主机设置

所谓大规模虚拟主机,是指能够提供非常多的虚拟主机服务,比如能提供超过数十万个域名的虚拟主机服务。如果使用以上讨论的方法,是很难完成的。实现这种服务的一种方式是利用Apache 功能强大的URL重写功能。下面以一个实例来说明这种方式。

2.4.1 Apache中URL重写功能

Apache 1.2及以后版本都有URL重写(Rewrite)功能。简单的说,URL重写功能就是在Apache接收到请求后,在处理的过程中能根据预先设定的规则,对请求中的URL进行修改。这些规则主要由正规表达式组成。重写依赖于输入的URL、各种服务器端环境变量、HTTP请求头中的内容、时间,甚至可以通过外部的程序来使用数据库中的信息来帮助重写。

URL重写功能非常强大,通过URL重写,可以使Apache完成异常复杂的功能。当然,URL重写功能本身也比较复杂,关于URL重写功能的详细说明可以参看Apache 的随机文档。

2.4.2 使用Apache中URL重写功能实现基于名字的大规模虚拟主机设置

假设机器www.home.com提供名字形如abcde.home.com、hijk.home.com等的大规模虚拟主机服务。其中虚拟主机名必须是字母或数字,并且长度至少为3。为了防止一个目录下文件或子目录太多而对性能产生很大的负面影响,对用户的目录按照名字进行分级划分,如虚拟主机abcde.home.com的相关文件存放在目录/member/ab/de/abcde下面。其中“ab”、“de”分别是“abcde”的前边两个字符和最后两个字符。当用户请求http://abcde.home.com时,系统应该返回/member/ab/de/abcde下面的文件。

下面是为了完成这种功能需要进行的设置

1. 对域名服务器的设置

假设www.home.com的IP地址为202.103.190.57,在域名服务器DNS的home.com数据文件中增加一行:

--------------------------------------------------------------------

* IN A 202.103.190.57

--------------------------------------------------------------------

这样,所有 *.home.com的IP地址都会被解析为202.103.190.57,就没有必要为各个虚拟主机分别进行设置。

2. 对Apache的设置

首先使用命令“httpd -l”检查mod_rewrite模块是否已经编译到Apache中,如果没有,重新编译Apache。

然后在Apache的配置文件httpd.conf中增加如下语句(其中以“#”开头的为注释):

-----------------------------------------------------------------------

#禁止使用机器的正式名

UseCanonicalName off

#使能重写功能

RewriteEngine on

RewriteMap lowercase int:tolower

# 为安全考虑,对CGI程序不进行重写

RewriteCond %{REQUEST_URI} !^/cgi-bin/

# 对www.home.com不重写,其他的重写

RewriteCond ${lowercase:%{HTTP_HOST}} !^www\.home\.com(\.*)$

RewriteCond ${lowercase:%{HTTP_HOST}} ^[a-z0-9-]+\.home\.com(\.*)$

# 首先把机器名改为小写,添加到请求的文件路径前,并继续处理

RewriteRule ^(.+) ${lowercase:%{HTTP_HOST}}$1 [C]

# 重写请求

RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*) /member/$1$2/$2$3/$1$2$3/$5

RewriteRule ^([a-z0-9])([a-z0-9])([a-z0-9]*)([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*) /member/$1$2/$4$5/$1$2$3$4$5/$7

-------------------------------------------------------------------------

优点:只要一个IP地址就可以提供大量的虚拟主机服务,维护方便。

缺点:安全性低。上例为了增强安全性,禁止运行用户自己的CGI程序。

2.5 Apache WWW服务器下的重定向虚拟主机设置

重定向虚拟主机是指仅仅提供重定向功能,而不实际存放用户主页数据的虚拟主机。比如,某站点有多个镜像服务器,假设为www1.user.com、www2.user.com,…wwwn.user.com。这些服务器放在不同的网络上,分布于各地的客户访问这些服务器的速度也互不相同。而站点www.home.com通过虚拟域名user.home.com为这些镜像的服务器提供虚拟主机服务。当客户访问http://user.home.com时,www.home.com根据用户的IP地址、收集到的网络拓扑结构信息,把客户重定向到对该客户来说访问速度最快的站点。

重定向虚拟主机服务也可以通过使用URL重写功能来完成。这里仅给出简单的重写规则:

-------------------------------------------------------------------------

RewriteRule ^([a-z0-9]+)\.home\.com([\.]*)/(.*) /www/cgi-bin/nph-redirect.cgi/$1/$3 [T=application/x-httpd-cgi,L]

-------------------------------------------------------------------------

其中,nph-redirect.cgi为一个CGI程序,为了实现自动重定向,它需要产生完整的HTTP 应答头信息。该程序通过环境变量PATH_INFO得到用户请求的URL,通过环境变量REMOTE_ADDR得到用户的IP地址,并根据网络拓扑情况生成重定向信息,返回给客户。

参考文献:

1.Apache 1.3 User's Guide http://www.apache.org

Virtual Hosting Setup Using Apache

Abstract:

There are two types of WWW Virtual Hosting, IP-based and Name-based. Those two types are introduced in this thesis, followed by some methods about WWW Virtual Hosting configuration under Apache and the difference between them is analyzed.



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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP フレームワークのパフォーマンス比較: 速度と効率の究極の対決 PHP フレームワークのパフォーマンス比較: 速度と効率の究極の対決 Apr 30, 2024 pm 12:27 PM

ベンチマークによると、Laravel はページの読み込み速度とデータベース クエリで優れており、CodeIgniter はデータ処理で優れています。 PHP フレームワークを選択するときは、アプリケーションのサイズ、トラフィック パターン、開発チームのスキルを考慮する必要があります。

golang 関数の同時実行制御とサードパーティ ライブラリの統合と拡張 golang 関数の同時実行制御とサードパーティ ライブラリの統合と拡張 Apr 25, 2024 am 09:27 AM

同時プログラミングは、Goroutine と同時実行制御ツール (WaitGroup、Mutex など) を介して Go に実装されており、サードパーティのライブラリ (sync.Pool、sync.semaphore、queue など) を使用してその機能を拡張できます。これらのライブラリは、タスク管理、リソース アクセス制限、コード効率の向上などの同時操作を最適化します。キュー ライブラリを使用してタスクを処理する例では、実際の同時実行シナリオでのサードパーティ ライブラリのアプリケーションを示します。

Java 同時プログラミングで同時実行テストとデバッグを実行するにはどうすればよいですか? Java 同時プログラミングで同時実行テストとデバッグを実行するにはどうすればよいですか? May 09, 2024 am 09:33 AM

同時実行テストとデバッグ Java 同時プログラミングにおける同時実行テストとデバッグは非常に重要であり、次の手法が利用可能です。 同時実行テスト: 単体テスト: 単一の同時タスクを分離してテストします。統合テスト: 複数の同時タスク間の相互作用をテストします。負荷テスト: 高負荷時のアプリケーションのパフォーマンスとスケーラビリティを評価します。同時実行デバッグ: ブレークポイント: スレッドの実行を一時停止し、変数を検査するかコードを実行します。ロギング: スレッドのイベントとステータスを記録します。スタック トレース: 例外のソースを特定します。視覚化ツール: スレッドのアクティビティとリソースの使用状況を監視します。

回避モジュールは、アプリケーション層の DOS 攻撃から Web サイトを保護します。 回避モジュールは、アプリケーション層の DOS 攻撃から Web サイトを保護します。 Apr 30, 2024 pm 05:34 PM

Web サイトをオフラインにする攻撃方法はさまざまですが、より複雑な方法にはデータベースやプログラミングの技術的知識が必要です。より単純な方法は、「DenialOfService」(DOS) 攻撃と呼ばれます。この攻撃手法の名前は、一般の顧客や Web サイト訪問者からの通常のサービス要求を拒否させるという目的に由来しています。一般に、DOS 攻撃には 2 つの形式があります。OSI モデルの 3 番目と 4 番目の層、つまりネットワーク層の攻撃です。OSI モデルの 7 番目の層、つまり、アプリケーション層の攻撃です。攻撃 - ネットワーク層は、大量のジャンク トラフィックが Web サーバーに流れるときに発生します。スパム トラフィックがネットワークの処理能力を超えると、Web サイトがダウンします。 2 番目のタイプの DOS 攻撃はアプリケーション層で行われ、組み合わせて使用​​されます。

Eclipseにサーバーを追加する方法 Eclipseにサーバーを追加する方法 May 05, 2024 pm 07:27 PM

Eclipse にサーバーを追加するには、次の手順に従います。 サーバー ランタイム環境の作成 サーバーの構成 サーバー インスタンスの作成 サーバー ランタイム環境の選択 サーバー インスタンスの構成 サーバー デプロイメント プロジェクトの開始

58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 May 09, 2024 am 09:01 AM

1. 58 Portraits プラットフォーム構築の背景 まず、58 Portraits プラットフォーム構築の背景についてお話ししたいと思います。 1. 従来のプロファイリング プラットフォームの従来の考え方ではもはや十分ではありません。ユーザー プロファイリング プラットフォームを構築するには、複数のビジネス分野からのデータを統合して、ユーザーの行動や関心を理解するためのデータ マイニングも必要です。最後に、ユーザー プロファイル データを効率的に保存、クエリ、共有し、プロファイル サービスを提供するためのデータ プラットフォーム機能も必要です。自社構築のビジネス プロファイリング プラットフォームとミドルオフィス プロファイリング プラットフォームの主な違いは、自社構築のプロファイリング プラットフォームは単一のビジネス ラインにサービスを提供し、オンデマンドでカスタマイズできることです。ミッドオフィス プラットフォームは複数のビジネス ラインにサービスを提供し、複雑な機能を備えていることです。モデリングを提供し、より一般的な機能を提供します。 2.58 中間プラットフォームのポートレート構築の背景のユーザーのポートレート 58

PHP を使用して Web サイトを展開および維持する方法 PHP を使用して Web サイトを展開および維持する方法 May 03, 2024 am 08:54 AM

PHP Web サイトを正常に展開して維持するには、次の手順を実行する必要があります。 Web サーバー (Apache や Nginx など) を選択する PHP をインストールする データベースを作成して PHP に接続する コードをサーバーにアップロードする ドメイン名と DNS を設定する Web サイトのメンテナンスを監視する手順には、PHP および Web サーバーの更新、Web サイトのバックアップ、エラー ログの監視、コンテンツの更新が含まれます。

Java パッケージ管理、依存関係とバージョン管理の統合 Java パッケージ管理、依存関係とバージョン管理の統合 Apr 24, 2024 pm 09:48 PM

Java では、パッケージ管理とバージョン管理の統合が重要であり、Maven を使用して依存関係を管理し、Git を使用してバージョン管理を行います。統合手順には、Git リポジトリの初期化、Maven 関数パッケージ情報ファイルの作成、Git リポジトリへの追加が含まれます。実際のケースでは、CommonsLang 依存関係を追加し、Maven を使用してダウンロードし、Git リポジトリに追加して、チームが同じ依存関係バージョンを使用するようにします。

See all articles