首页 > 代码库 > apache 使用心得(启动多实例,单实例监听多端口,单实例监听多域名)

apache 使用心得(启动多实例,单实例监听多端口,单实例监听多域名)

   很久之前就手动配置过apache了,今天遇到一个需要在阿里云服务器上配置apache路由多个域名到不同的服务器根目录这样的问题,研究了一段时间,得出了下面的心得,分享给大家~


*以windows系统为例子

   下面要会说到的内容:
1 开启多个apache实例,监听多个端口(作用就是方便读取不同的配置文件)

2 单个apache实例监听多个端口

3 单个apache实例监听一个端口(80),实现不同域名访问80端口的时候,指向不同的服务器根目录


1 开启多个apache实例

httpd.exe -k install -n “服务名” -f “d:/apache2.2/conf/web2.conf” 切换到apache的安装目录下bin目录,httpd.exe -k install -n “服务名” -f “新配置路径/配置.conf”

添加新服务之后会提示test失败,原因是添加后没有开启,可以手动开启服务,开启方法可以使用apache提供的ApacheMonitor,选择实例开启~~~

有了多个实例之后,就可以分别去配置实例对应的conf文件了~注意不同实例监听的端口不能相同


2 单个实例监听多个端口

在配置文件找到Listen 80(服务器默认监听80),直接在下行加上Listen8080就可以监听第二个端口了


3 为同个端口配置不同的服务器根目录

这个是重点要说的,在配置文件中添加

#默认虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
 ServerName *
 DocumentRoot "C:/htdocs"
<Directory "C:/htdocs"> 
 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
 AllowOverride None 
 Order Deny,Allow 
 Allow from all 
</Directory>
</VirtualHost>

#新增虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
 ServerName www.hello.com
 DocumentRoot "C:/hello"
<Directory "C:/hello"> 
 Options FollowSymLinks IncludesNOEXEC Indexes
 DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
 AllowOverride None 
 Order Deny,Allow 
 Allow from all 
</Directory>
</VirtualHost>

上面Direcotory不是必要项~

说明:域名可以在提供商处绑定到指定IP,访问域名的时候DNS会将域名解析到指定的IP(访问域名默认为*:80端口),所在IP上的服务器(默认监听80端口)就可以响应访问请求,同时服务器可以知道用户是通过哪个域名访问到服务器的

比如

www.hello.com域名绑定到服务器1.1.1.1

www.welcome.com域名也绑定到服务器1.1.1.1

这样子当有请求来是,服务器是可以知道请求是通过hello.com还是welcom.com进来的,所以就有了上面虚拟主机的配置方法

VirtualHost指定了一个ServerName,就是请求来自哪个域名

上面的配置效果就是,如果有来自www.hello.com的请求,则服务器的根目录为C:/hello,其它域名的根目录就是C:/htdocs了


apache 使用心得(启动多实例,单实例监听多端口,单实例监听多域名)