ngnix +tomcat 配置动态二级域名+负载均衡+集群

l前提条件:

实现动态二级域名必须让域名服务商开通泛解析

lNgnix的配置:

#启动进程数(和CPU个数一样)

worker_processes1;

#工作模式及连接数上限

events{

worker_connections1024;

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持

http{

#设定mime类型

includemime.types;

default_typeapplication/octet-stream;

#设定请求缓冲

client_header_buffer_size1k;

large_client_header_buffers44k;

#开启gzip模块

gzipon;

gzip_min_length1100;

gzip_buffers48k;

gzip_typestext/plain;

output_buffers132k;

postpone_output1460;

client_header_timeout3m;

client_body_timeout3m;

send_timeout3m;

sendfileon;

tcp_nopushon;

tcp_nodelayon;

keepalive_timeout65;

upstreamsv1

{

server127.0.0.1:8080;#第一台tomcat

server127.0.0.1:8090;#第二台tomcat

ip_hash;#这个配置很重要,保证通一个用户访问的是同一个tomcat,即session同步

}

upstreamsv2

{

server127.0.0.1:8080;#第一台tomcat

server127.0.0.1:8090;#第一台tomcat

ip_hash;

}

#第一个服务应用

server{

listen80;

server_namewww.bobo.com;

#rootD:\Tomcat\www;

location/{

proxy_passhttp://sv1;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

}

error_page404500502503504/50x.html;

location=/50x.html{

roothtml;

}

}

#第二个服务应用

server{

listen80;

server_namemv.bobo.com;

#rootD:\Tomcat\www2;

location/{

proxy_passhttp://sv2;

proxy_set_headerHost$host;

proxy_set_headerX-Real-IP$remote_addr;

proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;

}

error_page404500502503504/50x.html;

location=/50x.html{

roothtml;

}

}

}

lTomcat的配置:

这个是你主域名对应的站点

<Hostname="www.bobo.com"appBase="D:\Tomcat\www"

unpackWARs="true"autoDeploy="true"

xmlValidation="false"xmlNamespaceAware="false">

</Host>

这个是你的二级站点对应的站点(单独的应用)

<Hostname="mv.bobo.com"appBase="D:\Tomcat\www2"

unpackWARs="true"autoDeploy="true"

xmlValidation="false"xmlNamespaceAware="false">

</Host>

两个Tomcat配置是一样的。

l在主应用中实现动态二级域名的效果

大概思路:

request.getServerName();

您可以获取到当前请求的host,如:bobotc.bobo.com;这样你就可以截取到bobotc了,假设要实现类似新浪博客那样的永久二级域名,其实bobotc就是那个用户名了,获取到后内部重定向到一个用户主页页面,其实地址栏里没有看到变化,看着好像是二级域名,其实是内部使用的障眼法。

相关推荐