同一服务器不同域名不同网站配置 (转)
http://blog.csdn.net/zhanglei5415/article/details/6821066
http://www.linuxidc.com/Linux/2012-05/61381.htm
转载备查。
Apache的WEB服务器仅有一个ip ,却需要服务多个域名(实际是多个网站的服务)。那么,实现的方法是什么呢?本文将告诉你答案。(你还可以通过对本文中的代码进行修改,来实现不同域名使用相同IP、相同端口或者相同IP、不同端口的功能)。
比如你希望使用同一台web服务器来同时运行www.deerol.com与www.163.com,那么你可以在Apache的配置文件httpd.conf中(一般位于/etc/httpd/conf或/usr/local/apache/conf目录下),添加以下内容:
以下是服务器配置文件(Server configuration)httpd.conf中需要添加的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # Ensure that Apache listens on port 80 Listen 80 # Listen for virtual host requests on all IP addresses NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/deerol_com ServerName www.deerol.com # Other directives here #配置域名的目录访问权限 <Directory "/www/deerol_com"> Options Indexes FollowSymLinks allow from all </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot /www/163_com ServerName www.163.com # Other directives here #配置域名的目录访问权限 <Directory "/www/deerol_com"> Options Indexes FollowSymLinks allow from all </Directory> </VirtualHost> |
以上代码应该加入到Apache配置文件httpd.conf中的类似代码的后面;
DocumentRoot表示网站根目录,ServerName表示需要服务的域名,80表示Apache监听80端口
在你正确写入以上代码之后,apache会就用户访问的域名对应配置中的ServerName选择合适的web目录输出html代码。以上设置中第一项(即ServerName www.deerol.com)是默认选项。若用户访问所指定的域名不符合所有条目时采用默认项,即指向www.deerol.com。
在配置时可能遇到的场景:
1.使用域名加端口访问
如果需要带端口访问(这种情况很少,一般会在测试时用到)如:www.domain.com:8081 这时在配置
2.如果服务器上除了Apache服务外还装了IIS(运行asp,asp.NET程序),Tomcat(运行Java,jsp程序)服务该如何配置?
一般的我们会把Apache默认为80端口,IIS可以设置为81端口,Tomcat设置为8080端口。假设有一jsp程序,在服务器本地配置时我们可以通过http://localhost:8080/document访问。那如何配置通过域名访问到该地址呢?
1 2 3 4 5 6 7 | <VirtualHost *:80> ProxyPreserveHost On ServerName yourdomain.com DirectoryIndex index.jsp ProxyPass / http://localhost:8080/KBoom/ ProxyPassReverse / http://localhost:8080/KBoom/ </VirtualHost> |
这里我们注意到使用了代理访问。首先开启代理支持ProxyPreserveHost On,然后再配置正向代理和反向代理 ProxyPass / http://localhost:8080/KBoom (kboom为虚拟目录)
与tomcat配合
首先说一下我的需求是这样:apache作为前端分发器,把域名解析的内容转发到后台的Tomcat上去,tomcat也只有一个,但拥有2个不同的实例。就是分别是2个不同的网站。不要根据不同域名转向tomcat后台不同的网站上去。
现在开始讲讲配置流程:
1.进入apache的htpd.conf中配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #如果有2个以上域名必须写这句,要不会出错。 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@linuxidc.com #网站放置的路径 DocumentRoot /*****/ROOT #申请的域名 ServerName *****.com #通过mode_jk把所有该域名的http请求转发到worker3申明的tomca下 JkMount /* worker3 #错误信息打印的日志 ErrorLog /usr/local/apache2/logs/error_log #CustomLog /usr/local/apache2/logs/access_log </VirtualHost> #设置改路径下的权限为:可访问、可读、可写 <Directory /home/tomcat/tomcat/webapps/ROOT> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> #和上面一样的配置 <VirtualHost *:80> ServerAdmin webmaster@linuxidc.com #另一个网站路径 DocumentRoot /*****/company #另一个域名 ServerName *****.com #所有该域名下的请求发到ankaisteel申明的tomcat下 JkMount /* ankaisteel ErrorLog /usr/local/apache2/logs/error_log #CustomLog /usr/local/apache2/logs/access_log </VirtualHost> <Directory /home/tomcat/tomcat/webapps/company> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> #引用mod_jk的配置文件 Include conf/mod_jk.conf |
2.我们来配置workers.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #apache需要分发到后台tomcat域名的列表 worker.list=worker3,ankaistee # Set properties worker3 for tomcat (ajp13) worker.worker3.type=ajp13 #这个名称一定要和tomcat的虚拟主机名配置成一样 worker.worker3.host=localhost worker.worker3.port=8010 worker.worker3.lbfactor=50 worker.worker3.connection_pool_size=512 worker.worker3.connection_pool_timeout=600 worker.worker3.socket_keepalive=1 worker.worker3.socket_timeout=60 #worker.worker3.cachesize=10 #worker.worker3.cache_timeout=600 #worker.worker3.recycle_timeout=300 # Set ankaisteel for tomcat (ajp13) worker.ankaisteel.port=8010 #这个名称一定要和tomcat的虚拟主机名配置成一样 worker.ankaisteel.host=*****.com worker.ankaisteel.type=ajp13 worker.ankaisteel.lbfactor=1 3.我们来配置uriworkermap.properties #这两个配置不是很确定,没有测试过没有这两句行不行 /*=ankaisteel /*=worker3 |
4.配置tomcat的server.xml
1 2 3 4 5 6 7 8 9 | <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/ROOT" path="" reloadable="true"/> </Host> <Host name="*****.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/company" path="" reloadable="true"/> |
这里name一定要和前面host一致,path参数一定不要写。
Comments are currently closed.