首页主机apache虚拟主机配置文件,如何配置 Apache 的虚拟主机

apache虚拟主机配置文件,如何配置 Apache 的虚拟主机

编程之家2023-10-16108次浏览

老铁们,大家好,相信还有很多朋友对于apache虚拟主机配置文件和如何配置 Apache 的虚拟主机的相关问题不太懂,没关系,今天就由我来为大家分享分享apache虚拟主机配置文件以及如何配置 Apache 的虚拟主机的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

apache虚拟主机配置文件,如何配置 Apache 的虚拟主机

如何配置 Apache 的虚拟主机

方法/步骤

Apache配置虚拟主机方法在windows和linux有些差异,今天给大家演示如何在windows上配置Apache虚拟主机,此方法主要适用于独立的Apache环境。

1.打开目录Apache的安装目录/conf/extra/,找到 httpd-vhosts.conf文件;

2.添加一段代码来指定某一域名的网站,如图我配置虚拟域名是:

project.com,文件目录指向的是CI框架;

<VirtualHost*:80>

apache虚拟主机配置文件,如何配置 Apache 的虚拟主机

ServerAdmin webmaster@dummy-host.project.com

DocumentRoot"D:/AMP/Apache/htdocs/ci"

ServerName project.com

ErrorLog"logs/project.com-error.log"

CustomLog"logs/project.com-access.log" common

</VirtualHost>

apache虚拟主机配置文件,如何配置 Apache 的虚拟主机

3.打开 httpd.conf文件,添加如下代码:

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

如果已存在,将Include前面的#去掉;

4.重启 Apache服务,打开虚拟域名之后,结果如图所示:

如何配置apache虚拟主机的实例小结

如果你是第一次配置apache虚拟主机,那么通过阅读这篇文章你将会了解到如何实现apache虚拟主机配置。其实要配置好一台虚拟主机没有想象中那么难

1、基于ip地址的虚拟主机

复制代码代码如下:

Listen 80

<VirtualHost 172.20.30.40>

DocumentRoot/home/httpd/html1

ServerName www.ok1.com

ErrorLog/usr/local/apache/logs/error1_log

CustomLog/usr/local/apache/logs/access1_log combined

</VirtualHost>

<VirtualHost 172.20.30.50>

DocumentRoot/home/httpd/html2

ServerName www.ok2.com

ErrorLog/usr/local/apache/logs/error2_log

CustomLog/usr/local/apache/logs/access2_log combined

</VirtualHost>

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

<VirtualHost 172.20.30.40:80>

DocumentRoot/www/example1-80

ServerName www.example1.com

</VirtualHost>

<VirtualHost 172.20.30.40:8080>

DocumentRoot/www/example1-8080

ServerName www.example1.com

</VirtualHost>

<VirtualHost 172.20.30.50:80>

DocumentRoot/www/example2-80

ServerName www.example1.org

</VirtualHost>

<VirtualHost 172.20.30.50:8080>

DocumentRoot/www/example2-8080

ServerName www.example2.org

</VirtualHost>

3、单个IP地址的服务器上基于域名的虚拟主机配置

复制代码代码如下:

# Ensure that Apache listens on port 80

Listen 80

# Listen for virtual host requests on all IP addresses

NameVirtualHost*:80

<VirtualHost*:80>

DocumentRoot/www/example1

ServerName www.example1.com

ServerAlias example1.com.*.example1.com

# Other directives here

</VirtualHost>

<VirtualHost*:80>

DocumentRoot/www/example2

ServerName www.example2.org

# Other directives here

</VirtualHost>

如果您感觉上面的文章还不够详细可以看下下面的文章:

实验目标:在apache实现基于域名的虚拟主机

实验用的XAMPP版本为1.7.7,内含apache版本为2.2.21

实验前准备:

1.为了测试不同的域名,在Windows/System32/drivers/etc/下觅得hosts文件,在其中添加实验用的域名若干,如-

复制代码代码如下:

127.0.0.1 test1.net

127.0.0.1 test2.net

如此,则在浏览器中输入该俩域名时,Windows将其解析为127.0.0.1本地地址。即,在浏览器中访问localhost, test1.net, test2.net均可访问XAMPP的欢迎页。

2.在apache目录下建立目录,以放置您不同的网站。为保护XAMPP原有的htdocs中的欢迎页内容,实验另外建立了与htdocs平级的htdocs1目录,在其下建立了test1.net, test2.net两个子目录用以放置实验用的网站。如下-

apache/htdocs1/test1.net-放置test1.net网站内容

apache/htdocs1/test2.net-放置test2.net网站内容

在这两个目录中各新建hello world一网页 index.html,内容-

复制代码代码如下:

<HTML>

<HEAD></HEAD>

<BODY>

<H1>hello~,这是[对应的网站名,用以区别].net</H1></BODY>

</HTML>

实验步骤:

1.找到apache/conf/httpd.conf,将其中的

ServerAdmin

ServerName

DocumentRoot

注释掉。

2.在httpd.conf中,找到行

Include"conf/extra/httpd-vhosts.conf"

如被注释则解注。该文件记载了虚拟主机的参数。[以前虚拟主机参数是直接填写在httpd.conf中的,为了更好地组织文件,将其分离出去,类似于某些编程语言一样。因此httpd.conf中include它,即相当于把它的内容填在了httpd.conf中。]

3.这个httpd-vhosts.conf文件格式基本如下-

复制代码代码如下:

#blah-blah

NameVirtualHost*:80

#blah-blah

#blah-blah

<VirtualHost*:80>

ServerAdmin XXXXXXXX

DocumentRoot"XXXXXXXX"

ServerName XXXXXXX

ServerAlias XXXXXX

ErrorLog"logs/XXXXXX-error.log"

CustomLog"logs/XXXXXXX-error.log" combined

</VirtualHost>

需要修改的,就是<VirtualHost>中的参数了。这个可以参见apache官方文档。根据实验域名,可以增加两个<VirtualHost>:

复制代码代码如下:

<VirtualHost*:80>

ServerAdmin adm@test1.net

DocumentRoot"C:/xampp/htdocs1/test1.net"

ServerName test1.net

ServerAlias www.test1.net

ErrorLog"logs/test1-error.log"

CustomLog"logs/test1-access.log" combined

<Directory"C:/xampp/htdocs1/test1.net">

order allow,deny

allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerAdmin adm@test2.net

DocumentRoot"C:/xampp/htdocs1/test2.net"

ServerName test2.net

ServerAlias www.test2.net

ErrorLog"logs/test1-error.log"

CustomLog"logs/test1-access.log" combined

<Directory"C:/xampp/htdocs1/test2.net">

order allow,deny

allow from all

</Directory>

</VirtualHost>

注意,如果不在各VirtualHost中定义Directory的可访问性,你将遇到的是Access Forbidden!就连原来的localhost也是。

4.由于之前注释掉了httpd.conf中的ServerName, DocumentRoot等,为了仍然能以localhost访问原XAMPP欢迎页,就在增加一个VirtualHost,如下-

复制代码代码如下:

<VirtualHost*:80>

ServerAdmin adm@localhost

DocumentRoot"C:/xampp/htdocs"

ServerName localhost

ErrorLog"logs/localhost-error.log"

CustomLog"logs/localhost-access.log" combined

<Directory"C:/xampp/htdocs">

order allow,deny

allow from all

</Directory>

</VirtualHost>

为了避免出错,把它放置在第一个Virtualhost位置。

至此,apache基于域名的虚拟主机配置完成。可以通过http://localhost访问XAMPP欢迎页,通过http://test1.net和http://test2.net访问各自的主页。

#

# Virtual Hosts

#

# If you want to maintain multiple domains/hostnames on your

# machine you can setup VirtualHost containers for them. Most configurations

# use only name-based virtual hosts so the server doesn't need to worry about

# IP addresses. This is indicated by the asterisks in the directives below.

#

# Please see the documentation at

#<URL:http://httpd.apache.org/docs/2.2/vhosts/>

# for further details before you try to setup virtual hosts.

#

# You may use the command line option'-S' to verify your virtual host

# configuration.

#

# Use name-based virtual hosting.

#

NameVirtualHost*:80

#

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for all requests that do not

# match a ServerName or ServerAlias in any<VirtualHost> block.

#

<VirtualHost*:80>

ServerAdmin kongdaoxian@gmail.com

DocumentRoot"E:/skydao/apache2/htdocs"

ServerName localhost

ServerAlias www.skydao.com

ErrorLog"logs/localhost-error.log"

CustomLog"logs/localhost-access.log" combined

<Directory"E:/skydao/apache2/htdocs">

order allow,deny

allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerAdmin kongdaoxian@gmail.com

DocumentRoot"E:/skydao/apache2/htdocs/project1"

ServerName project1.com

ServerAlias www.project1.com

ErrorLog"logs/project1-error.log"

CustomLog"logs/project1-access.log" combined

<Directory"E:/skydao/apache2/htdocs/project1">

order allow,deny

allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerAdmin kongdaoxian@gmail.com

DocumentRoot"E:/skydao/apache2/htdocs/zendTest/public"

ServerName zendTest.com

ServerAlias www.zendTest.com

DirectoryIndex index.php

<Directory/>

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerAdmin kongdaoxian@gmail.com

DocumentRoot"E:/skydao/apache2/htdocs/testRewrite"

ServerName testRewrite.com

ServerAlias www.testRewrite.com

# DirectoryIndex index.php

<Directory/>

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerAdmin kongdaoxian@gmail.com

DocumentRoot"E:/skydao/apache2/htdocs/test"

ServerName test.com

ServerAlias www.test.com

ErrorLog"logs/zendTest-error.log"

CustomLog"logs/zendTest-access.log" combined

<Directory"E:/skydao/apache2/htdocs/test">

order allow,deny

allow from all

</Directory>

</VirtualHost>

基于apache怎么配置虚拟主机

Apache配置虚拟主机三种方式

一、基于IP

1.假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP:

[root@localhost root]# ifconfig eth0:1 192.168.1.11

[root@localhost root]# ifconfig eth0:2 192.168.1.12

[root@localhost root]# ifconfig eth0:3 192.168.1.13

2.修改hosts文件,添加三个域名与之一一对应:

192.168.1.11 www.test1.com

192.168.1.12 www.test2.com

192.168.1.13 www.test3.com

3.建立虚拟主机存放网页的根目录,如在/www目录下建立test1、test2、test3文件夹,其中分别存放1.html、2.html、3.html

/www/test1/1.html

/www/test2/2.html

/www/test3/3.html

4.在httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置:

复制代码

<VirtualHost 192.168.1.11:80>

ServerName www.test1.com

DocumentRoot/www/test1/

<Directory"/www/test1">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow From All

</Directory>

</VirtualHost>

<VirtualHost 192.168.1.12:80>

ServerName www.test1.com

DocumentRoot/www/test2/

<Directory"/www/test2">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow From All

</Directory>

</VirtualHost>

<VirtualHost 192.168.1.13:80>

ServerName www.test1.com

DocumentRoot/www/test3/

<Directory"/www/test3">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow From All

</Directory>

</VirtualHost>

复制代码

5.大功告成,测试下每个虚拟主机,分别访问www.test1.com、www.test2.com、www.test3.com

二、基于主机名

1.设置域名映射同一个IP,修改hosts:

192.168.1.10 www.test1.com

192.168.1.10 www.test2.com

192.168.1.10 www.test3.com

2.跟上面一样,建立虚拟主机存放网页的根目录

/www/test1/1.html

/www/test2/2.html

/www/test3/3.html

3.在httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置:

为了使用基于域名的虚拟主机,必须指定服务器IP地址(和可能的端口)来使主机接受请求。可以用NameVirtualHost指令来进行配置。如果服务器上所有的IP地址都会用到,你可以用*作为NameVirtualHost的参数。在NameVirtualHost指令中指明IP地址并不会使服务器自动侦听那个IP地址。这里设定的IP地址必须对应服务器上的一个网络接口。

下一步就是为你建立的每个虚拟主机设定<VirtualHost>配置块,<VirtualHost>的参数与NameVirtualHost指令的参数是一样的。每个<VirtualHost>定义块中,至少都会有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容存在于文件系统的什么地方。

如果在现有的web服务器上增加虚拟主机,必须也为现存的主机建造一个<VirtualHost>定义块。其中ServerName和DocumentRoot所包含的内容应该与全局的保持一致,且要放在配置文件的最前面,扮演默认主机的角色。

复制代码

NameVirtualHost*:80

<VirtualHost*:80>

ServerName*

DocumentRoot/www/

</VirtualHost>

<VirtualHost*:80>

ServerName www.test1.com

DocumentRoot/www/test1/

<Directory"/www/test1">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerName www.test2.com

DocumentRoot/www/test2/

<Directory"/www/test2">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost*:80>

ServerName www.test3.com

DocumentRoot/www/test3/

<Directory"/www/test3">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

复制代码

4.大功告成,测试下每个虚拟主机,分别访问www.test1.com、www.test2.com、www.test3.com

三、基于端口

1.修改配置文件

将原来的

Listen 80

改为

Listen 80

Listen 8080

2.更改虚拟主机设置:

复制代码

<VirtualHost 192.168.1.10:80>

DocumentRoot/var/www/test1/

ServerName www.test1.com

</VirtualHost>

<VirtualHost 192.168.1.10:8080>

DocumentRoot/var/www/test2

ServerName www.test2.com

</VirtualHost>

好了,关于apache虚拟主机配置文件和如何配置 Apache 的虚拟主机的问题到这里结束啦,希望可以解决您的问题哈!

死亡笔记前篇,死亡笔记三部顺序动态主机配置协议,什么是动态ip