Jslfl【软件开发技术笔记】

同一服务器不同域名不同网站配置 (转)

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 这时在配置 后,还需要添加对该端口的监听Listen 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.