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>
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>
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 的虚拟主机的问题到这里结束啦,希望可以解决您的问题哈!