烂泥:apache虚拟主机的学习与应用

烂泥:apache虚拟主机的学习与应用,第1张

烂泥:apache虚拟主机的学习与应用

这篇文章最初发表在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和端口不匹配的请求。但是,主服务器不会处理任何请求。因此,有必要将主服务器配置为虚拟主机。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/783946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存