大家都知道,Apache是一个非常强大的,高度灵活,可配置Web服务器,Unix操作系统 。 在这里,在本教程中,我们要讨论的Apache多一个功能,它可以让我们托管多个网站单一的Linux机器上。 使用Apache Web服务器实现虚拟主机可以帮助您节省投资您的服务器维护和管理的成本。
不要错过 : NGINX基于名称和基于IP的虚拟主机(服务器模块)
Linux中的Apache虚拟主机
共享虚拟主机和经销商网络托管的概念是基于Apache的只有这个设施。
虚拟主机的类型
Apache有两种类型的虚拟主机可用。
基于名称的虚拟主机
随着名称的虚拟主机可以在一台机器上托管多个站点 / 网站用一个IP。 该服务器上的所有域将共享单个IP。 它更容易比基于IP的虚拟主机配置,你只需要配置与它的正确的IP地址映射它的域的DNS,然后配置Apache域名来识别它。
基于名称的虚拟主机
基于IP的虚拟主机
通过基于IP的虚拟主机,您可以在单个服务器上为每个域分配单独的IP,这些IP可以使用单个NIC卡以及多个NIC连接到服务器。
基于IP的虚拟主机
让我们建立了基于名称的虚拟主机和基于IP的虚拟主机在RHEL,CentOS的和Fedora。
测试环境
- OS - CentOS的6.5
- 应用 - 的Apache Web服务器
- IP地址 - 192.168.0.100
- IP地址 - 192.168.0.101
- 域 - www.example1.com
- 域 - www.example2.com
如何设置基于IP和基于名称的Apache虚拟主机
在设置虚拟主机与Apache,您的系统必须安装的Apache Web软件。 如果没有,请使用默认包安装程序yum安装它。
[root@youcl ~]# yum install httpd
基于设置名称的虚拟主机
但是,在创建虚拟主机之前,您需要创建一个目录,您将在其中保留所有网站的文件。 因此,创建在/ var / www / html等文件夹,这两个虚拟主机目录。 请记住在/ var / www / html等将成为您的默认文档根在Apache虚拟配置。
[root@youcl ~]# mkdir /var/www/html/example1.com/ [root@youcl ~]# mkdir /var/www/html/example2.com/
要设置基于名称的虚拟主机,您必须告诉Apache您将使用哪个IP来接收所有网站或域名的Apache请求。 我们可以用NameVirtualHost指令做到这一点。 第VI编辑器中打开Apache的主配置文件。
[root@youcl ~]# vi /etc/httpd/conf/httpd.conf
搜索了NameVirtualHost和删除它前面的#号去掉这一行。
NameVirtualHost
接下来添加您希望在其中接收Apache请求的IP。 更改后,您的文件应如下所示:
NameVirtualHost 192.168.0.100:80
现在,是时候为您的站点设置虚拟主机部分,按Shift + G移动到文件的底部。在这里,在这个例子中,我们正在为两个域设置虚拟主机节
- www.example1.com
- www.example2.com
在文件底部添加以下两个虚拟指令。 保存并关闭文件。
<VirtualHost 192.168.0.100:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com ErrorLog logs/www.example1.com-error_log CustomLog logs/www.example1.com-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com ErrorLog logs/www.example2.com-error_log CustomLog logs/www.example2.com-access_log common </VirtualHost>
您可以随意添加要添加到您的域虚拟主机部分中的任何指令。 当你在httpd.conf文件修改完成后,请检查文件的语法,用下面的命令。
[root@youcl ~]# httpd -t Syntax OK
建议在进行一些更改之后,在重新启动Web服务器之前检查文件的语法,因为如果任何语法错误,Apache将拒绝处理一些错误,并最终影响您现有的Web服务器暂停一段时间。 如果语法确定 。 请重新启动您的Web服务器,并把它添加到命令行工具来使您的Web服务器在运行级别3和5只在开机时启动。
[root@youcl ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
[root@youcl ~]# chkconfig --level 35 httpd on
现在是时候创建一个名为index.html的一些内容添加到文件中,所以我们感到有检查,当IP呼叫虚拟主机测试页。
[root@youcl ~]# vi /var/www/html/example1.com/index.html
<html> <head> <title>www.example1.com</title> </head> <body> <h1>Hello, Welcome to www.example1.com.</h1> </body> </html>
[root@youcl ~]# vi /var/www/html/example2.com/index.html
<html> <head> <title>www.example2.com</title> </head> <body> <h1>Hello, Welcome to www.example2.com.</h1> </body> </html>
完成后,您可以通过在浏览器中访问这两个域来测试设置。
http://www.example1.com http://www.example2.com
预览:www.example1.com
虚拟主机:www.example1.com
预览:www.example2.com
虚拟主机:www.example2.com
设置基于IP的虚拟主机Linux
要建立基于IP的虚拟主机,你必须有一个以上的IP地址 / 端口分配给您的服务器或Linux机器。
它可以是一个单一的NIC卡上,例如: 为eth0:1, 为eth0:2, 为eth0:3 ...等等。 多个NIC卡也可以连接。 如果你不知道如何在单网卡创建多个IP的,按照下面的指导,这将帮助你在创造。
实现基于IP的虚拟主机的目的是实现分配为每个域和特定的IP不会被任何其他域使用。
当网站与SSL证书(mod_ssl的 ),或者在不同的端口和IP上运行这种设立要求。 您还可以在单个机器上运行Apache的多个实例。 要检查连接在服务器中的IP,请使用检查ifconfig命令 。
root@youcl ~]# ifconfig
示例输出
eth0 Link encap:Ethernet HWaddr 08:00:27:4C:EB:CE inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe4c:ebce/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:17550 errors:0 dropped:0 overruns:0 frame:0 TX packets:15120 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16565983 (15.7 MiB) TX bytes:2409604 (2.2 MiB) eth0:1 Link encap:Ethernet HWaddr 08:00:27:4C:EB:CE inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1775 errors:0 dropped:0 overruns:0 frame:0 TX packets:1775 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3416104 (3.2 MiB) TX bytes:3416104 (3.2 MiB)
正如你可以看到上面的输出,双IP地址192.168.0.100 了(eth0)和192.168.0.101( 为eth0:1)连接到服务器,IP地址都被分配到同一个物理网络设备(eth0的 )。
现在,分配一个特定的IP / 端口接收HTTP请求,你可以简单地做它通过改变听在httpd.conf文件指令。
[root@youcl ~]# vi /etc/httpd/conf/httpd.conf
搜索词“ 听 ”,你会发现其中写Listen指令的简短说明的部分。 在该部分中,注释原始行并在该行下面写入您自己的指令。
# Listen 80 Listen 192.168.0.100:80
现在,为这两个域创建一个虚拟主机部分。 转到文件的底部,并添加以下虚拟指令。
VirtualHost 192.168.0.100:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1 ServerName www.example1.com ErrorLog logs/www.example1.com-error_log TransferLog logs/www.example1.com-access_log </VirtualHost> <VirtualHost 192.168.0.101:80> ServerAdmin webmaster@example2.com DocumentRoot /var/www/html/example2 ServerName www.example2.com ErrorLog logs/www.example2.com-error_log TransferLog logs/www.example2.com-access_log </VirtualHost>
现在,由于您已经修改了主要的Apache配置文件,您需要重新启动http服务,如下所示。
[root@youcl ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
如下所示,在访问Web浏览器的URL测试基于IP的虚拟主机设置。
http://www.example1.com http://www.example2.com
这一切都与Apache虚拟主机今天,如果你正在寻找安全和加固你的Apache配置,然后阅读我们的文章指南。
参考链接
我会再次与我的未来文章中的其他一些Apache提示和伎俩,直到那时保持Geeky和连接到youcl.com。 不要忘记在下面的评论部分留下您对这篇文章的建议。