ngnix +tomcat 配备动态二级域名+负载均衡+集群
ngnix +tomcat 配置动态二级域名+负载均衡+集群
l 前提条件:
实现动态二级域名必须让域名服务商开通泛解析
l Ngnix的配置:
#启动进程数(和CPU个数一样)
worker_processes 1;
#工作模式及连接数上限
events {
worker_connections 1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include mime.types;
default_type application/octet-stream;
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
#开启gzip模块
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
upstream sv1
{
server 127.0.0.1:8080; #第一台tomcat
server 127.0.0.1:8090; #第二台tomcat
ip_hash; #这个配置很重要,保证通一个用户访问的是同一个tomcat,即session同步
}
upstream sv2
{
server 127.0.0.1:8080; #第一台tomcat
server 127.0.0.1:8090; #第一台tomcat
ip_hash;
}
#第一个服务应用
server {
listen 80;
server_name www.bobo.com;
#root D:\Tomcat\www;
location / {
proxy_pass http://sv1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#第二个服务应用
server {
listen 80;
server_name mv.bobo.com;
#root D:\Tomcat\www2;
location / {
proxy_pass http://sv2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
l Tomcat的配置:
这个是你主域名对应的站点
<Host name="www.bobo.com" appBase="D:\Tomcat\www"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
这个是你的二级站点对应的站点(单独的应用)
<Host name="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就是那个用户名了,获取到后内部重定向到一个用户主页页面,其实地址栏里没有看到变化,看着好像是二级域名,其实是内部使用的障眼法。
l 前提条件:
实现动态二级域名必须让域名服务商开通泛解析
l Ngnix的配置:
#启动进程数(和CPU个数一样)
worker_processes 1;
#工作模式及连接数上限
events {
worker_connections 1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include mime.types;
default_type application/octet-stream;
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
#开启gzip模块
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
upstream sv1
{
server 127.0.0.1:8080; #第一台tomcat
server 127.0.0.1:8090; #第二台tomcat
ip_hash; #这个配置很重要,保证通一个用户访问的是同一个tomcat,即session同步
}
upstream sv2
{
server 127.0.0.1:8080; #第一台tomcat
server 127.0.0.1:8090; #第一台tomcat
ip_hash;
}
#第一个服务应用
server {
listen 80;
server_name www.bobo.com;
#root D:\Tomcat\www;
location / {
proxy_pass http://sv1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#第二个服务应用
server {
listen 80;
server_name mv.bobo.com;
#root D:\Tomcat\www2;
location / {
proxy_pass http://sv2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
l Tomcat的配置:
这个是你主域名对应的站点
<Host name="www.bobo.com" appBase="D:\Tomcat\www"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
这个是你的二级站点对应的站点(单独的应用)
<Host name="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就是那个用户名了,获取到后内部重定向到一个用户主页页面,其实地址栏里没有看到变化,看着好像是二级域名,其实是内部使用的障眼法。