Rumah php教程 php手册 Apache下服务器虚拟主机的设置方法介绍

Apache下服务器虚拟主机的设置方法介绍

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

一、WWW服务器虚拟主机原理

WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器。比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别。

使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度。另外,对于个人用户,也可以使用这种虚拟主机方式来建立有自己独立域名的WWW服务器,目前国内有很多公司都提供这种免费的服务。

WWW虚拟主机有两种工作方式:

1.1 基于IP地址的虚拟主机方式

这种方式下,不同的主机名解析到不同的IP地址,提供虚拟主机服务的机器上同时设置有这些IP地址。服务器根据用户请求的目的IP地址来判定用户请求的是哪个虚拟主机的服务,从而进一步的处理。

缺点:基于IP地址的虚拟主机方式需要在提供虚拟主机服务的机器上设立多个IP地址,既浪费了IP地址,又限制了一台机器所能容纳的虚拟主机数目。因此这种方式越来越少使用。但是,这种方式是早期使用的HTTP 1.0协议唯一支持的虚拟主机方式。

1.2 基于主机名的虚拟主机方式

由于基于IP地址的虚拟主机方式有如上的缺点,HTTP 1.1协议中增加了对基于主机名的虚拟主机的支持。具体说,当客户程序向WWW服务器发出请求时,客户想要访问的主机名也通过请求头中的“Host:”语句传递给WWW服务器。比如,www.company1.com, www.company2.com 都对应于同一个IP地址(即由同一台机器来给这两个虚拟域名提供服务),客户程序要存取http://www.company1.com/index.html时,发出的请求头中包含有如下的内容:

GET /index.html HTTP/1.1

Host: www.company1.com

…..

WWW服务器程序接收到这个请求后,可以通过检查“Host:”语句,来判定客户程序请求是哪个虚拟主机的服务,然后再进一步的处理。

优点:提供虚拟主机服务的机器上只要设置一个IP地址,理论上就可以给无数多个虚拟域名提供服务,占用资源少,管理方便。目前基本上都是使用这种方式来提供虚拟主机服务。

缺点:在早期的HTTP 1.0版本下不能使用。实际上现在使用的浏览器基本上都支持基于主机名的虚拟主机方式。

二、Apache服务器下的虚拟主机设置技术

2.1 Apache WWW服务器简介

Apache WWW服务器是目前Internet上使用最广的WWW服务器软件。通过灵活的配置,它可以完成几乎您想得到的功能。本文主要介绍在Apache 下设置各种虚拟主机的方法。

2.2 Apache WWW服务器下基于IP地址的虚拟主机设置

使用这种虚拟主机方式,首先要在服务器上为每个虚拟主机单独设置一个IP地址。这些IP地址可以通过增加多个网卡或者在一个网卡上设立多个IP地址来完成。有了多个IP地址后,可以采用以下两种方式之一来设置Apache:

2.2.1 为每个虚拟主机运行一份Apache

采用这种方式,每一份Apache程序可以以单独的用户运行,因此各个虚拟主机之间互不影响。设置这种虚拟主机时,只要为每一份Apache设置一套配置文件就可以了,唯一需要注意的是:必须使用“Listen”语句,强制每一份Apache 仅仅在属于“自己”的IP地址上接收服务请求。

优点:各个虚拟主机之间互不干扰,安全性高。

缺点:占用系统资源较多。

2.2.2多个虚拟主机共享同一份Apache

采用这种方式,各个虚拟主机共享同一份Apache,因此各个虚拟主机之间有一定的影响,尤其是执行CGI程序时,可能会带来一些严重的安全问题。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可:

<ccid_code><virtualhost www.company1.com>; DocumentRoot /home/company1 … ;</virtualhost></ccid_code>
Salin selepas log masuk

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

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

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

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

<ccid_code>NameVirtualHost 111.222.33.44 ; 在这个IP地址接收虚拟主机的服务 <virtualhost>; ServerName www.company1.com DocumentRoot /www/company1 </virtualhost>; <virtualhost>; ServerName www.company2.com DocumentRoot /www/company2 </virtualhost>;</ccid_code>
Salin selepas log masuk

优点:只要一个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.



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbandingan Prestasi Rangka Kerja PHP: Pertunjukan Terunggul Kepantasan vs Perbandingan Prestasi Rangka Kerja PHP: Pertunjukan Terunggul Kepantasan vs Apr 30, 2024 pm 12:27 PM

Menurut penanda aras, Laravel cemerlang dalam kelajuan memuatkan halaman dan pertanyaan pangkalan data, manakala CodeIgniter cemerlang dalam pemprosesan data. Apabila memilih rangka kerja PHP, anda harus mempertimbangkan saiz aplikasi, corak trafik dan kemahiran pasukan pembangunan.

Bagaimana untuk menjalankan ujian konkurensi dan penyahpepijatan dalam pengaturcaraan serentak Java? Bagaimana untuk menjalankan ujian konkurensi dan penyahpepijatan dalam pengaturcaraan serentak Java? May 09, 2024 am 09:33 AM

Ujian dan penyahpepijatan serentak Ujian dan penyahpepijatan serentak dalam pengaturcaraan serentak Java adalah penting dan teknik berikut tersedia: Ujian serentak: Ujian unit: Asingkan dan uji satu tugas serentak. Ujian integrasi: menguji interaksi antara pelbagai tugas serentak. Ujian beban: Nilaikan prestasi dan kebolehskalaan aplikasi di bawah beban berat. Penyahpepijatan Konkurensi: Titik Putus: Jeda pelaksanaan utas dan periksa pembolehubah atau jalankan kod. Pengelogan: Rekod peristiwa dan status urutan. Jejak tindanan: Kenal pasti sumber pengecualian. Alat visualisasi: Pantau aktiviti benang dan penggunaan sumber.

Bagaimana untuk menambah pelayan dalam eclipse Bagaimana untuk menambah pelayan dalam eclipse May 05, 2024 pm 07:27 PM

Untuk menambah pelayan pada Eclipse, ikuti langkah berikut: Cipta persekitaran masa jalan pelayan Konfigurasikan pelayan Cipta contoh pelayan Pilih persekitaran masa jalan pelayan Konfigurasi contoh pelayan Mulakan projek penggunaan pelayan

Aplikasi algoritma dalam pembinaan 58 platform potret Aplikasi algoritma dalam pembinaan 58 platform potret May 09, 2024 am 09:01 AM

1. Latar Belakang Pembinaan 58 Portrait Platform Pertama sekali, saya ingin berkongsi dengan anda latar belakang pembinaan 58 Portrait Platform. 1. Pemikiran tradisional platform pemprofilan tradisional tidak lagi mencukupi Membina platform pemprofilan pengguna bergantung pada keupayaan pemodelan gudang data untuk menyepadukan data daripada pelbagai barisan perniagaan untuk membina potret pengguna yang tepat untuk memahami tingkah laku, minat pengguna dan keperluan, dan menyediakan keupayaan sampingan, akhirnya, ia juga perlu mempunyai keupayaan platform data untuk menyimpan, bertanya dan berkongsi data profil pengguna dan menyediakan perkhidmatan profil dengan cekap. Perbezaan utama antara platform pemprofilan perniagaan binaan sendiri dan platform pemprofilan pejabat pertengahan ialah platform pemprofilan binaan sendiri menyediakan satu barisan perniagaan dan boleh disesuaikan atas permintaan platform pertengahan pejabat berkhidmat berbilang barisan perniagaan, mempunyai kompleks pemodelan, dan menyediakan lebih banyak keupayaan umum. 2.58 Potret pengguna latar belakang pembinaan potret di platform tengah 58

Modul mengelak melindungi tapak web anda daripada serangan DOS lapisan aplikasi Modul mengelak melindungi tapak web anda daripada serangan DOS lapisan aplikasi Apr 30, 2024 pm 05:34 PM

Terdapat pelbagai kaedah serangan yang boleh membawa laman web di luar talian, dan kaedah yang lebih kompleks melibatkan pengetahuan teknikal pangkalan data dan pengaturcaraan. Kaedah yang lebih mudah dipanggil serangan "DenialOfService" (DOS). Nama kaedah serangan ini berasal dari niatnya: untuk menyebabkan permintaan perkhidmatan biasa daripada pelanggan biasa atau pelawat laman web ditolak. Secara umumnya, terdapat dua bentuk serangan DOS: lapisan ketiga dan keempat model OSI, iaitu, serangan lapisan rangkaian Lapisan ketujuh model OSI, iaitu, serangan lapisan aplikasi serangan - lapisan rangkaian, berlaku apabila sejumlah besar trafik sampah mengalir ke pelayan web. Apabila trafik spam melebihi keupayaan rangkaian untuk mengendalikannya, tapak web akan turun. Jenis kedua serangan DOS adalah pada lapisan aplikasi dan penggunaan gabungan

Bagaimana untuk menggunakan dan menyelenggara laman web menggunakan PHP Bagaimana untuk menggunakan dan menyelenggara laman web menggunakan PHP May 03, 2024 am 08:54 AM

Untuk berjaya menggunakan dan menyelenggara tapak web PHP, anda perlu melakukan langkah berikut: Pilih pelayan web (seperti Apache atau Nginx) Pasang PHP Cipta pangkalan data dan sambungkan PHP Muat naik kod ke pelayan Sediakan nama domain dan Pemantauan DNS penyelenggaraan tapak web langkah termasuk mengemas kini PHP dan pelayan web, dan membuat sandaran tapak web, memantau log ralat dan mengemas kini kandungan.

Bagaimana untuk memanfaatkan Operator Kubernetes memudahkan penggunaan awan PHP? Bagaimana untuk memanfaatkan Operator Kubernetes memudahkan penggunaan awan PHP? May 06, 2024 pm 04:51 PM

KubernetesOperator memudahkan penggunaan awan PHP dengan mengikut langkah berikut: Pasang PHPOperator untuk berinteraksi dengan gugusan Kubernetes. Gunakan aplikasi PHP, isytiharkan imej dan port. Urus aplikasi menggunakan arahan seperti mendapatkan, menerangkan dan melihat log.

Cara melaksanakan amalan terbaik keselamatan PHP Cara melaksanakan amalan terbaik keselamatan PHP May 05, 2024 am 10:51 AM

Cara Melaksanakan Amalan Terbaik Keselamatan PHP PHP ialah salah satu bahasa pengaturcaraan web bahagian belakang paling popular yang digunakan untuk mencipta laman web dinamik dan interaktif. Walau bagaimanapun, kod PHP boleh terdedah kepada pelbagai kelemahan keselamatan. Melaksanakan amalan terbaik keselamatan adalah penting untuk melindungi aplikasi web anda daripada ancaman ini. Pengesahan input Pengesahan input ialah langkah pertama yang kritikal dalam mengesahkan input pengguna dan mencegah input berniat jahat seperti suntikan SQL. PHP menyediakan pelbagai fungsi pengesahan input, seperti filter_var() dan preg_match(). Contoh: $username=filter_var($_POST['username'],FILTER_SANIT

See all articles