CentOS配置Nginx+Tomcat7的多站点支持

注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。

#准备工作#

在这之前需要先把Nginx和Tomcat安装好,具体见:《CentOS安装Nginx-1.6.2+安全配置》《CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置》

#Nginx+Tomcat7多站点的配置#

假设现在项目有两个站点, 分别是proj1和proj2,其对应的域名分别是proj1.com和proj2.com。

1)首先配置Tomcat的server.xml文件:

# vim /usr/local/tomcat/conf/server.xml

<Host name="proj1.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Alias>proj1.com</Alias>
    <Alias>www.proj1.com</Alias>
    <Context path="" reloadable="true" docBase="proj1-dir/proj1" />
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="proj1_access_log." suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="proj2.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Alias>proj2.com</Alias>
    <Alias>www.proj2.com</Alias>
    <Context path="" reloadable="true" docBase="proj2-dir/proj2" />
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="proj2_access_log." suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

注:在Tomcat的webapps目录下存在两个目录proj1-dir和proj2-dir,这两个目录下又分别存放.war文件解压后的Web目录(这里是为了保证两个Web目录不在同一个根目录下面

2)然后在Nginx的配置文件中配置多站点:

# vim /usr/local/nginx/conf/nginx.conf

http {
    server {
        listen       80;
        server_name  proj1.com www.proj1.com;
        index        index.jsp;
        root         /usr/local/tomcat/webapps/proj1-dir/proj1;
        location / {
            proxy_pass   http://www.proj1.com:8080;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        access_log   /data/logs/proj1.access.log;
    }
    server {
        listen       80;
        server_name  proj2.com www.proj2.com;
        index        index.jsp;
        root         /usr/local/tomcat/webapps/proj2-dir/proj2;
        location / {
            proxy_pass   http://www.proj2.com:8080;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        access_log   /data/logs/proj2.access.log;
    }
}

至此,Nginx+Tomcat7多站点配置完毕。启动Tomcat和Nginx之后,就可以同时在一个服务器上支持多个域名站点访问。