在Apache服务器上添加虚拟主机功能的方法

Apache 默认存放网页根目录,是在/var/www/html/下面,也就是说,默认情况下,一个服务器,只能跑一个网站。但是一台性能还算不错的服务器,如果只跑一个网站,岂不是有点浪费?其实 Apache 是支持虚拟主机功能的,以虚拟主机模式可以跑 N 个网站。

Apache 开启虚拟主机功能的方式也很简单,以 CentOS 6.3 和 Apache 2.2 为例, 在 /etc/httpd/conf.d/ 目录下创建一个vhost.conf配置文件,内容格式如下:

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName aaa.com
   ServerAlias www.aaa.com
   DocumentRoot /srv/www/aaa.com/public_html/
</VirtualHost>

<VirtualHost *:80>
   ServerName bbb.com
   ServerAlias www.bbb.com
   DocumentRoot /srv/www/bbb.com/public_html/
</VirtualHost>

然后为这两个网站创建相应的目录:

$ mkdir -p /srv/www/aaa.com/public_html
$ mkdir -p /srv/www/bbb.com/public_html

分别在以上两个域名中,添加一个 A 记录指向该服务器的 IP 地址,然后重启 Apache 服务器:

$ service httpd restart

如果需要记录访问日志和错误日志,以及实现 URL 重写等功能,还需做如下修改:

<VirtualHost *:80>
   ServerAdmin webmaster@aaa.com
   ServerName aaa.com
   ServerAlias www.aaa.com
   DocumentRoot /srv/www/aaa.com/public_html/
   ErrorLog /srv/www/aaa.com/logs/error.log
   CustomLog /srv/www/aaa.com/logs/access.log combined
   <Directory /srv/www/aaa.com/public_html/>
     Options FollowSymLinks
     AllowOverride All
     Order allow,deny
     allow from all
   </Directory>
</VirtualHost>

至此,虚拟主机创建完成,以不同的域名访问,服务器会返回不同的内容。

另外需要说明的是,如果此时还用 IP 地址来访问该服务器,返回的内容将不再是/var/www/html/中的内容,而是vhost.conf配置文件中的第一个虚拟主机的内容。

(0)

相关推荐

  • 13个实用的Apache Rewrite重写规则

    1.去掉域名中的www标记 复制代码 代码如下: RewriteCond %{HTTP_HOST} !^jb51\.net$ [NC]RewriteRule .? http://jb51.net%{REQUEST_URI} [R=301,L] 2.去掉www标记,但是保存子域名 复制代码 代码如下: RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?jb51\.net)$ [NC]RewriteRule .? http://%1%{REQUEST_UR

  • apache虚拟主机的配置指南

    一.检查apache虚拟主机模块 apache要配置虚拟主机,就需要先查看apache是否编译vhost_alias_module模块.当然apache默认是已经编译该模块的,我们可以通过以下命令查看是否已经编译模块,如下: /usr/local/apache2/bin/apachectl -M 二.开启apache虚拟主机功能 要开启apache虚拟主机功能,我们需要修改apache配置文件http.conf.打开apache的安装目录,找到httpd.conf文件,去掉Include con

  • Apache伪静态Rewrite详解

    一.Rewrite规则简介:Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接 安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块.二.在Apache配置中启用Rewrite打开配置文件httpd

  • 给Apache虚拟主机增加端口的方法

    找到你的apache安装目录,找到httpd.conf文件,  搜索#listen这一句,在下面增加 复制代码 代码如下: listen 800      listen 801      listen 802 这里是测试,你可以根据你的需要增加不同的监听端口,好了apache web的端口开好了,我们要来配置一下虚拟主机了.    找到 复制代码 代码如下: #<virtualhost *:80> #    serveradmin webmaster@dummy-host2.phps教程hao

  • apache虚拟主机配置一例

    复制代码 代码如下: fivetrees extra # cat httpd-vhosts.conf_bak## 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

  • Apache Rewrite实现URL的301跳转和域名跳转

    如果要想用到rewrite模块,必须先安装或加载rewrite模块.方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块. 基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意

  • apache配置虚拟主机的方法详解

    1.apache配置文件中打开vhost的配置LoadModule vhost_alias_module modules/mod_vhost_alias.soInclude conf/extra/httpd-vhosts.conf 2.extra目录中的httpd-vhosts.conf里面进行配置,有三个:第一个DocumentRoot,项目的绝对目录,后面以/结尾:第二个是ServerPath,与DocumentRoot一致:第三个是ServerName,自己在浏览器中输入的域名.如:tes

  • apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)

    在apache的环境下该如何配置多个HTTPS虚拟主机呢?利用的原理的都是同一个,也就是SNI.基于域名的虚拟主机,即共享同一个IP地址和端口的HTTPS虚拟主机. SNI-服务器名称指示,是一个TLS的扩展,它使得启用SSL的基于域名的虚拟主机的配置成为可能.打破了每个HTTPS的虚拟主机需要一个IP地址的要求.因此,成本大大降低,因为所有的HTTPS虚拟主机可以共享相同的IP地址和端口,使HTTPS Web服务的更简单. 在apache环境下,需要使用mod_gnutls来实现同一个IP上配

  • Apache中Virtual Host虚拟主机配置及rewrite参数说明

    Virtual Host配置过程 这里例子中我们的路径为这样 DocumentRoot: /home/jb51 /sites/demo.jb51.net ServerName:demo.jb51.net 1.进入apache虚拟主机设置目录 cd /etc/apache2/sites-available 2.创建文件demo.jb51.net <VirtualHost *:80> ServerAdmin webmaster@localhost DirectoryIndex index.html

  • 用ISAPI_Rewrite让IIS也支持如Apache下.htaccess的URL重写

    前些日子用Linux做服务器写了一些东西,发现Apache下的.htaccess真是个好东西!不仅能实现URL真重写,还能实现假重写.真重写可以有效降低代码量与服务器资源消耗量,伪重写可以有效减少服务器的静态文件体积,节约了空间,真是不错!其实htaccess的功能远不只如此. 言归正传,那么IIS下能不能也实现htaccess这样激动人心的功能呢?ASP.NET2.0这个东东不是服务器级的,不能胜任重写这个重任,那么只有交给ISAPI了,在网上搜索,还居然真有公司(组织)开发了这种东东!不可思

  • apache服务器一个ip(如:127.0.0.1)和多个域名(虚拟主机)的绑定

    今天在学习PHP时,有这样的一个需求:一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定,以下是我的解决方案: 解决方案一:通过端口来区分不同的虚拟主机 ①按照绑定一个站点的方法做好准备 1. 先开发好自己的网站(d:/myblog(存放在D盘的myblog目录下)) 2. 配置httpd.conf文件(存放在apache安装目录的conf文件夹中),启用httpd-vhosts.conf(把第二行前面的#号去掉即可). 3. 配置httpd-vhosts.conf文件(存放在apac

  • Apache Rewrite url重定向功能的简单配置

    1.Apache Rewrite的主要功能 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写.配置步骤如下: (1)去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewri

  • apache虚拟主机三种配置方式小结

    使用虚拟主机必须要注释掉httpd的主机模块,即修改httd.conf的主配置文件,找到,将这段内容注释掉就可以了. apche的虚拟主机配置一共有三种,即基于IP.基于port.以及基于域名的.为了后面试验,需要配置两个IP地址(我主机现在的IP地址是10.10.50.100),命令如下: #ip addr add 10.10.50.101/16 dev eth0 #ip addr add 10.10.50.102/16 dev eth0 关于如何配置IP地址,此处不再赘述,后面我会专门写篇关

随机推荐