这篇文章最初发表在mud上。
要配置apache的虚拟主机,我们需要执行以下步骤:
1.检查apache虚拟主机模块。
2.打开apache虚拟主机功能
3.httpd-vhosts.conf文件的详细说明
4.根据IP配置虚拟主机
5.根据端口配置虚拟主机。
6.根据域名配置虚拟主机。
I.检查apache虚拟主机模块
为了配置虚拟主机,apache需要检查apache是否编译了vhost_alias_module模块。当然,apache已经默认编译了该模块。我们可以通过以下命令检查模块是否已经编译,如下所示:
/usr/local/Apache2/bin/ApacheCTL-M
其次,打开apache虚拟主机功能
要打开apache虚拟主机功能,我们需要修改apache配置文件http.conf打开apache的安装目录,找到httpd.conf文件,去掉includeconf/extra/httpd-vhosts.conf之前的#如下:
vihttpd.conf
这一行的作用是将conf/extra/目录下的httpd-vhosts.conf文件导入到虚拟主机配置中。
虚拟主机的所有以下配置都在httpd-vhosts.conf文件中执行。如下所示:
apache有三种虚拟主机配置,基于IP地址、端口和域名。
在这三种虚拟主机中,我们主要讲解基于域名的虚拟主机。基于IP和基于端口在生产环境中很少使用,这里只大致说明一下它的配置。
注意,在此之前,我们必须修改httpd.conf文件,删除关于目录访问权限的配置选项。否则,当访问虚拟主机时,将报告错误403。如下所示:
httpd.conf文件从all中删除了Orderdeny、allow和deny行,并对它们进行了如下修改:
<目录/>;
符号链接后的选项
配置文件中有多处
</Directory>;
值得注意的是,当我们为apache启用虚拟主机时,所有用户请求都将由相应的虚拟主机处理。如果apache找不到对应的虚拟主机,它会将请求交给配置文件中的第一个虚拟主机进行处理。
同时,如果配置了基于域名的虚拟主机,我们必须启用name虚拟主机*:80行。如下:
三。httpd-vhosts.conf文件的详细说明
httpd-vhosts.conf文件的内容大致如下:
NameVirtualHost*:80
<virtualhost*:80>;
服务器管理webmaster@dummy-host.example.com
documentroot"@@serverroot@@/docs/dummy-host.example.com"
服务器名dummy-host.example.com
服务器别名www.dummy-host.example.com
errorlog"logs/dummy-host.example.com-error_log"
CustomLog"logs/dummy-host.example.com-access_log"common
</virtualhost>;
虚拟主机指定虚拟主机使用的IP地址或域名,但最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必需的指令。虚拟主机可以定义多个。与NameVirtualHost或
如果设置了NameVirtualHost或 如果要基于域名配置虚拟主机,必须使用NameVirtualHost命令,该命令用于指定当前服务器的哪些IP地址和端口可以接受与虚拟主机相关的访问请求,并且这些IP地址和端口必须包含在服务器监听的地址和端口中。 如果您想使用服务器上的所有IP地址,您可以使用命令:NameVirtualHost*。 如果apache监听多个端口(例如常规端口80和SSL端口443),则必须在NameVirtualHost指令中指定一个端口,例如NameVirtualHost*:80。 我们可以使用虚拟主机配置段来添加虚拟主机。如果有多个虚拟主机,我们可以添加多个这样的配置段。 在虚拟主机配置部分,我们可以使用配置说明来设置虚拟主机。除了创建过程等少数特殊说明外,几乎所有说明都可以出现在虚拟主机配置部分。如果没有设置某些指令,虚拟主机将在主服务器范围内采用与默认设置相同的全局指令。当然,VirtualHost配置部分至少应该包含两个配置指令,ServerName和DocumentRoot,以指定虚拟主机的域名和站点文档目录的路径。如下所示: <virtualhost*:80>; DocumentRoot"/www/a.ilanni.com" 服务器名a.ilanni.com </virtualhost>; 管理员邮箱。 DocumentRoot网站目录(注意:如果网站目录中的路径有空大小写,请在路径两端加上双引号)。 要绑定的ServerName域名(必需)。 ServerAlias要绑定到的虚拟主机的别名。(可选,如果有多个域名,中间用空网格隔开,如果没有,则删除该行)。支持*,?两个通配符,如*.abc.com,表示可以访问abc.com的任何二级域名。 CustomLog用户日志文件(可选,如果不需要,请删除此行)。 ERRORErrorLog(可选,如果不需要,删除此行)。 四。根据IP配置虚拟主机 基于apacheIP的虚拟主机在实际生产环境中很少使用,主要是单网卡多IP的情况。 为了测试这个功能,我们需要给服务器的网卡添加一个IP。首先检查服务器的IP地址,如下所示: ifconfigeth0|grep"inetaddr"|awk“{print$2}”|cut-d:-F2 ifconfigeth2|grep"inetaddr"|awk“{print$2}”|sed's/addr://g' 可以看到,服务器当前的IP是192.168.1.213,另外一个IP地址是192.168.1.215。0eth0网卡添加IP地址,可以通过网卡配置文件实现。如下所示: CP/etc/sysconfig/network-scripts/ifCFG-eth0/etc/sysconfig/network-scripts/ifCFG-eth0:0 cat/etc/sysconfig/network-scripts/ifCFG-eth0:0 /etc/init.d/网络重启 平192.168.1.215 添加IP地址后,我们现在修改虚拟主机的配置文件httpd-vhosts.conf。如下所示: cathttpd-vhosts.conf|grep-v^$|grep-v^# 修改httpd-vhosts.conf后,我们需要检查虚拟主机是否配置正确,并使用-S命令。如下所示: /etc/init.d/httpd–S 从上图可以看出,这个虚拟主机的配置是正确的。 为虚拟主机192.168.1.215创建主页文件,如下所示: mkdir/www/192.168.1.215 echo"这是网络服务器192.168.1.215">;/www/192.168.1.215/index.html cat/www/192.168.1.215/index.html 访问192.168.1.215虚拟主机。如下所示: 或由elinks进行测试,如下所示: elinks-dumphttp://192.168.1.215 可以看到虚拟主机192.168.1.215,可以正常访问。 现在访问192.168.1.213看看实际效果。如下所示: 五、根据端口配置虚拟主机 apache默认监听端口80,这可以通过Apache配置文件httpd.conf查看,如下所示: cat/usr/local/Apache2/conf/httpd.conf|grep80 基于apache端口的虚拟主机在实际生产环境中也不多见,一般用于为公司内部人员提供访问,如页面后台、CMS发布、phpmyadmin等。 现在我们开始配置基于端口的虚拟主机。在此之前,我们需要修改两个文件:apache配置文件httpd.conf和apache虚拟主机配置文件httpd-vhosts.conf 现在我们使用端口8088来设置虚拟主机。修改httpd.conf,如下所示: vim/usr/local/Apache2/conf/httpd.conf 修改完这个文件后,让我们修改httpd-vhosts.conf,如下所示: cathttpd-vhosts.conf|grep-v^$|grep-v^# 为虚拟主机192.168.1.215:8088创建主页文件,如下所示: mkdir192.168.1.215:8088 echo"hisisweb-server192.168.1.215:8088">index.php 凯特·index.php 现在访问虚拟主机192.168.1.215:8088,如下所示: 或者使用elinks,如下所示: elinks-dumphttp://192.168.1.215:8088 六。根据域名配置虚拟主机 基于Apache域名的虚拟主机是我们经常使用的,也是生产环境中最常见的。 为了基于域名配置虚拟主机,我们仍然需要编辑httpd-vhosts.conf文件。如下所示: vimhttpd-vhosts.conf :45,48s/192.168.1.215:8088/a.ilanni.com/g 经过以上修改,让我们创建虚拟主机a.ilanni.com的默认主页。如下所示: mkdir/www/a.ilanni.com 回声"<?PHPphpinfo();?>>/www/a.ilanni.com/index.php cat/www/a.ilanni.com/index.php 完成上述配置后,重新加载apache的配置文件,即优雅重启apache。如下所示: /etc/init.d/httpd优雅 访问虚拟主机a.ilanni.com,如下所示: 或者使用elinks,如下所示: 埃利克斯-转储http://a.ilanni.com 从上图可以看出,当前虚拟主机a.ilanni.com可以正常访问。 七。虚拟主机的混合配置 我们已经介绍了apache的基于IP、基于端口和基于域名的虚拟主机配置。下面我们给出apache混合虚拟主机配置,配置文件如下: <虚拟主机b.ilanni.com:8088 服务器管理webmaster@dummy-host.example.com documentroot"/www/b.ilanni.com:8088" 服务器名b.ilanni.com:8088 errorlog"logs/b.ilanni.com:8088-error_log" CustomLog"logs/b.ilanni.com:8088-access_log"common </virtualhost>; 混合虚拟主机时的问题: 1.虚拟主机的混合使用可以这样理解:一行NameVirtualHost指令定义的所有虚拟主机都是一个组;该组相当于一个基于IP的虚拟主机。也就是说,一行NameVirtualHost定义的整个组都被视为一个基于IP的虚拟主机。 2.虚拟主机指定的端口必须由Listen定义。如果虚拟主机没有指定端口,则被视为端口80。如果NameVirtualHost*是这样定义的,那么它指的是所有地址的所有已定义端口。 3.更具体的地址定义是优选的。例如,如果NameVirtualHost命令定义*:80,并且基于IP的虚拟主机被定义为192.168.0.1:80,那么如果存在对192.168.0.1:80的请求,则该请求将被优先定向到由192.168.0.1:80定义的虚拟主机。所以为了避免混淆,不要定义相互交叉或包含的地址范围。 4.虚拟主机可以基于域名,也可以基于IP。上例中的最后一个虚拟主机。这样,满足这两个定义的请求都将被提交给同一个虚拟主机。有时候需要区分内网对虚拟主机的访问,因为来自内网的请求可能和外网的请求不一样,但是需要指向同一个虚拟主机。 使用“_default_”虚拟主机,这个虚拟主机可以理解为基于IP的虚拟主机。如下所示: <虚拟主机_默认_:*>; DocumentRoot/www/default </virtualhost>; 该虚拟主机将接管与其他虚拟主机的IP和端口不匹配的请求。但是,主服务器不会处理任何请求。因此,有必要将主服务器配置为虚拟主机。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)