目錄
apache2.2 虚拟主机配置详解,apache2.2详解
一、修改httpd.conf
二、修改httpd-vhosts.conf
基于IP地址的虚拟主机
各种虚拟主机的混用
虚拟主机混用时的问题
使用"_default_"虚拟主机
首頁 後端開發 php教程 apache2.2 虚拟主机配置详解,apache2.2详解_PHP教程

apache2.2 虚拟主机配置详解,apache2.2详解_PHP教程

Jul 12, 2016 am 09:04 AM
虛擬主機

apache2.2 虚拟主机配置详解,apache2.2详解

一、修改httpd.conf

打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。 

#LoadModule vhost_alias_module modules/mod_vhost_alias.so  
登入後複製

去掉#意思是启用apache的虚拟主机功能。

#Include conf/extra/httpd-vhosts.conf
登入後複製

去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置

二、修改httpd-vhosts.conf

打开该文件,看到以下类似内容。虚拟主机的配置也是参照以下内容配置。下面对该内容进行讲解

NameVirtualHost *:80  
  
<VirtualHost *:80>  
    ServerAdmin webmaster@dummy-host.www.phpStudy.net  
    DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"  
    ServerName dummy-host.www.phpStudy.net  
    ServerAlias www.dummy-host.www.phpStudy.net  
    ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"  
    CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common  
</VirtualHost>  
登入後複製

NameVirtualHost *:80

注意1:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。 注意2:所有符合NameVirtualHost或标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。所以每个NameVirtualHost定义的参数至少要有一个相匹配。 注意3:如果设置NameVirtualHost 或为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。

ServerAdmin 管理员邮箱

DocumentRoot 网站目录 (注意:如果网站目录中的路径有空格,请在路径两端加上双引号)

ServerName 要绑定的域名(必填)

ServerAlias 要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)

支持*,?两种通配符,比如 *.abc.com,表示任意一个abc.com的二级域名都可访问。

CustomLog 用户日志文件(可选,如果不需要,则去掉该行)

ErrorLog 错误日志(可选,如果不需要,则去掉该行)

基于IP地址的虚拟主机

<VirtualHost 172.20.30.40>  
  DocumentRoot /www/example1  
  ServerName www.example.com  
</VirtualHost>  
登入後複製

<VirtualHost 172.20.30.50 192.168.0.10:80>  
  DocumentRoot /www/example2  
  ServerName www.example.org  
</VirtualHost>  
登入後複製

每个虚拟主机可定义多个IP,之间用空格隔开

各种虚拟主机的混用

Listen 80  
Listen 81  
  
NameVirtualHost 172.20.30.40  
  
<VirtualHost 172.20.30.40>  
    DocumentRoot /www/example1  
    ServerName www.example.com  
</VirtualHost>  
  
<VirtualHost 172.20.30.40>  
    DocumentRoot /www/example2  
    ServerName www.example.org  
</VirtualHost>  
  
NameVirtualHost 172.20.30.40:81  
  
<VirtualHost 172.20.30.40:81>  
    DocumentRoot /www/example3  
    ServerName www.example3.net  
</VirtualHost>  
  
# IP-based  
<VirtualHost 172.20.30.50>  
    DocumentRoot /www/example4  
    ServerName www.example4.edu  
</VirtualHost>  
  
<VirtualHost 172.20.30.60:81 172.20.30.40:81>  
    DocumentRoot /www/example5  
    ServerName www.example5.gov  
</VirtualHost>  
登入後複製

虚拟主机混用时的问题

一、虚拟主机混用可以这样理解:一行NameVirtualHost指令定义的所有虚拟主机为一组;该组与一个基于IP的虚拟主机平级。即把一行NameVirtualHost定义的整个组看作是一个基于IP的虚拟主机。 二、虚拟主机指定的端口必须是Listen定义的。如果虚拟主机没有指定端口,则认为是80端口。如果NameVirtualHost * 这样定义,是指所有地址的所有已定义端口。 三、更具体的地址定义优先。比如NameVirtualHost指令定义了*:80,而某个基于IP的虚拟主机定义为192.168.0.1:80,那么此时如有对192.168.0.1:80的请求,那请求会被优先指向192.168.0.1:80定义的虚拟主机。所以为了避免混乱,不要定义相互有交叉或包含的地址区间。 四、一个虚拟主机,可以同时为基于域名和基于IP的。如上一例中最后一个虚拟主机。这样符合两种定义的请求都会被指同一个虚拟主机。有时要区别内外网对虚拟主机的访问时可以这样,因为来自内网的请求可能和来自外网的请求可能不一样,但是它们需要指向同一个虚拟主机。

使用"_default_"虚拟主机

这个虚拟主机可以理解成基于IP的虚拟主机

<VirtualHost _default_:*>  
    DocumentRoot /www/default  
</VirtualHost>  
登入後複製

这个虚拟主机将接管与其它虚拟主机IP和端口不匹配的请求。不过如此一来,主服务器将不会处理任何请求。因此把主服务器配置成一个虚拟主机是必要的。

本地机器代理在其它机器上运行的虚拟主机

<VirtualHost 158.29.33.248>  
    ProxyPreserveHost On  
    ProxyPass /foo/no !  
    ProxyPass /foo http://192.168.111.2  
    ProxyPassReverse /foo http://192.168.111.2  
    ServerName hostname.example.com  
</VirtualHost>
登入後複製

一、首先这是一个基于IP的虚拟主机,它接收并处理对IP地址158.29.33.248的请求。 二、ProxyPass /foo http://192.168.111.2 将把对http://158.29.33.248/foo的请求转换为一个代理请求,该请求指向http://192.168.111.2。 三、ProxyPass /foo/no ! 不代理针对/foo/no的请求。这个必须放在正常代理指令之前。 四、ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。 五、ProxyPassReverse /foo http://192.168.111.2 可以保证请求URL在其它机器上被重定向后,本机处理时也可以保持一致。具体看手册关于反向代理的部分。 六、基于域名的虚拟主机也是同样的道理。不管是什么类型的虚拟主机,它只是处理归它处理的请求而已。

配置实例

需求1:

这是一个基于IP的虚拟主机使用实例

一个项目数据应用,为了防止由于域名解析问题导致不能正常访问,因此采用IP的方式访问接口。比如:http://61.122.3.6:8080/ 这样的方式。虚拟主机的配置如下:

1、在httpd.conf中Listen 80下面增加一行,内容为:Listen 8080,即监听8080端口

2、配置虚拟主机配置

#NameVirtualHost 61.122.3.6:8080 这一行可以不需要。经测试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。  
<VirtualHost 61.122.3.6:8080>  
    ServerAdmin webmaster@dummy-host.www.phpStudy.net  
    DocumentRoot "d:/web/openj"  
</VirtualHost>  
登入後複製

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1072328.htmlTechArticleapache2.2 虚拟主机配置详解,apache2.2详解 一、修改httpd.conf 打开appserv的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。 #...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何透過寶塔面板進行虛擬主機的限速設置 如何透過寶塔面板進行虛擬主機的限速設置 Jun 21, 2023 am 11:17 AM

寶塔面板是一款非常優秀的Linux系統下伺服器管理面板,它擁有強大的功能和友善的介面,可以幫助使用者輕鬆管理伺服器。在使用寶塔面板的過程中,有時候需要對虛擬主機進行限速操作,以確保伺服器的穩定性和流暢性。本文將介紹如何透過寶塔面板進行虛擬主機的限速設置,以達到良好的使用者體驗。一、限速概述限速是指主機頻寬進行限制,透過控制主機流量來確保伺服器的正常運作。在

Gin框架的虛擬主機和網域名稱綁定功能詳解 Gin框架的虛擬主機和網域名稱綁定功能詳解 Jun 22, 2023 am 09:10 AM

Gin框架是一個輕量級的網頁框架,它提供了快速建立網頁應用程式所需的基本功能。 Gin框架具有靈活、高效、可擴展的特點,因此廣泛應用於互聯網領域。其中,Gin框架的虛擬主機與網域名稱綁定功能,是其它Web框架所不具備的重要特性,本文將對此功能進行詳細介紹。一、什麼是虛擬主機?虛擬主機是在一台實體主機上建立多個獨立的、互相隔離的虛擬主機,每個虛擬主機都有自己獨

PHP如何對接騰訊雲端伺服器ECS實現雲端虛擬主機部署 PHP如何對接騰訊雲端伺服器ECS實現雲端虛擬主機部署 Jul 07, 2023 am 10:07 AM

PHP如何對接騰訊雲端伺服器ECS實現雲端虛擬主機部署引言:隨著雲端運算的快速發展,越來越多的企業和開發者選擇將應用程式部署到雲端伺服器上,以獲得更好的彈性、安全性和可伸縮性。本文將介紹如何使用PHP與騰訊雲端​​雲端伺服器ECS(ElasticComputeService)進行對接,並實現雲端虛擬主機的部署。步驟1:建立騰訊雲端伺服器ECS實例首先,我們需要在騰訊雲

國外免費php虛擬主機有哪些 國外免費php虛擬主機有哪些 Oct 16, 2023 am 09:57 AM

國外免費php虛擬主機有DreamHost、Bluehost、Hostinger、000Webhost、FreeHostia、Zymic、ByetHost和SiteGround。

如何使用寶塔面板進行虛擬主機的安全防護 如何使用寶塔面板進行虛擬主機的安全防護 Jun 21, 2023 pm 05:37 PM

在網路時代,虛擬主機是一個非常受歡迎的服務,它可以讓使用者擁有自己的網站並輕鬆地進行管理。但是,在使用虛擬主機時,安全性問題也必須引起我們的重視。針對這種情況,寶塔面板給了一個很好的解決方案,可以幫助我們更好地保護虛擬主機的安全。本文將介紹如何透過使用寶塔面板進行虛擬主機的安全防護。一、設定登入密碼和連接埠在使用寶塔面板前,第一步就要設定一個安全的登入密碼。預設的

Nginx如何實現基於網域名稱的虛擬主機配置 Nginx如何實現基於網域名稱的虛擬主機配置 Nov 08, 2023 pm 08:05 PM

Nginx如何實現基於網域名稱的虛擬主機配置,需要具體程式碼範例Nginx是一款高效能的HTTP和反向代理伺服器,提供了靈活的設定選項來實現基於網域名稱的虛擬主機配置。在本篇文章中,我們將詳細介紹如何設定Nginx來實現基於網域名稱的虛擬主機,並提供具體的程式碼範例。首先,我們需要在Nginx的設定檔中新增虛擬主機的設定區塊。在Ubuntu系統上,預設的設定檔路徑為/et

Nginx虛擬主機優化配置,提升網站效能與使用者體驗 Nginx虛擬主機優化配置,提升網站效能與使用者體驗 Jul 04, 2023 pm 05:55 PM

Nginx虛擬主機優化配置,提升網站效能和使用者體驗引言:如今,隨著網路的不斷發展,網站的訪問量也越來越大。而作為網站的入口,Nginx的最佳化配置對於提升網站效能和使用者體驗起著至關重要的作用。本文將介紹一些Nginx虛擬主機最佳化配置的方法,並附帶程式碼範例,讓您更能理解和應用。一、虛擬主機的配置虛擬主機是Nginx中的重要概念,透過虛擬主機的配置,我們可

如何使用Nginx實現基於網域名稱和路徑的虛擬主機配置 如何使用Nginx實現基於網域名稱和路徑的虛擬主機配置 Aug 02, 2023 pm 01:14 PM

如何使用Nginx實現基於網域名稱和路徑的虛擬主機設定引言:在網路應用開發中,經常需要設定多個虛擬主機來提供不同的服務。 Nginx是一個高效能的HTTP和反向代理伺服器,透過使用Nginx,我們可以很方便地實現基於網域名稱和路徑的虛擬主機配置。本文將介紹如何使用Nginx來實現這樣的配置,並給出相應的程式碼範例。一、基於網域的虛擬主機配置在Nginx的設定檔中,使用

See all articles