注:以下所有操作均在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 "%r" %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 "%r" %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之后,就可以同时在一个服务器上支持多个域名站点访问。