参考文件:http://www.cnblogs.com/mfc-itblog/p/5718655.html
起名: Tomcat服务器1 tomcat 服务器2 Nginx代理服务器
目录: opt/tomcat/tomcat7 opt/tomcat/tomcat764 /usr/local/nginx
接收http请求: 9090 9000 8888
Shutdown: 8005 8006
AJP: 8009 8010
一、Tomcat 服务的配置
先安装 Tomcat ,之后准备两个 Tomcat 服务器 以供负载均衡使用
两个Tomcat 服务器的 server.xml 文件中在以下位置添加红框中的配置 (另一个修改在 lxy2 目录)网站根目录(设置方法之一)
之后在两个网站根目录下创建 index.jsp 页面默认(默认访问首页)
访问服务器 1
访问服务器 2
注意:
上述两个服务器的配置文件 server.xml 文件中 修改三个主要的端口(端口号不能重复,避免后期出现端口占用的情况)
起名: Tomcat服务器1 tomcat 服务器2
目录: opt/tomcat/tomcat7 opt/tomcat/tomcat764
接收http请求: 9090 9000
Shutdown: 8005 8006
AJP: 8009 8010
(端口号按自己的习惯设置,但是不能重复,而且保证其他服务也没占用)
二、Nginx + Tomcat 整合
完成以上准备工作之后,只需在 Nginx 配置文件 nginx.conf 中进行配置
#user nobody;
user lxy lxy;
#worker_processes 1;
worker_processes 8;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 102400;
events {
worker_connections 102400 ; # 单个进程允许的最大连接数
}
# 设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 记录哪些用户,哪些页面以及浏览器、IP 和其他的访问信息
access_log logs/access.log main;
#sendfile on; 开启文件传输
#sendfile on; 开启文件传输
#tcp_nopush on; 告诉Nginx 在一个数据包发送所有头文件,而不是一个接一个的发送
#tcp_nodelay on; 发送一小块数据信息时就不能立即得到返回值
#
keepalive_timeout 65; # 连接超时多久,单位:s
# gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度,其他一些参数可以参考网络资料
gzip on;
# upstream作负载均衡,在此配置需要轮询的服务器地址和端口号,max_fails为允许请求失败的次数,默认为1
# weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率
upstream web_app {
server localhost:9090 weight=1 max_fails=2 fail_timeout=30s;
server localhost:9000 weight=1 max_fails=2 fail_timeout=30s;
}
# 主机配置
server {
listen 8888; # 监听端口(及访问Nginx的端口)
server_name chinaapp.sinaapp.com; # 域名
index index.jsp index.html index.htm;
#发布目录/usr/webapps/nginx (网站根目录)
root /usr/webapps/nginx;
#charset koi8-r;
#access_log logs/host.access.log main;
# 静态请求交给 Nginx 进行处理,不经过Tomcat 处理
location ~ .*\.(html|js|css|ico|png|jpg|eot|svg|ttf|woff){
root /usr/webapps/nginx;
expires 30d; # 缓存到客户端30天
}
# 动态请求交给 Tomcat进行处理
location ~ \.(jsp|do)$ {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web_app ; # 此处的web_app 与 upstream 处必须保持一致,否则找不到目标服务器
}
# 其他页面反向代理到tomcat容器
location ~ .*$ {
index index;
proxy_pass http://web_app;
}
# 启用nginx status 监听页面
# location /nginxstatus {
# stub_status on;
# access_log on;
# }
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
三、nginx.conf 文件分解
1、指定网站根目录
如图Nginx的网站根目录,包含以下文件(测试动静分离时用到)
2、配置负载均衡的两台Tomcat服务器地址
负载均衡中三台服务器(2 Tomcat & 1 Nginx)
weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率,在此配置中权重一样所以当刷新页面时是交替出现
Nginx 代理服务器访问 Tomcat
例如:第一次访问
刷新之后 轮回显示
当其中一台挂掉或者关掉之后另一台一直接受请求
当两台都关闭,或者挂掉时,出现以下错误界面,当然错误页面在配置文件中根据返回编码值可以自行设置。
3、动静分离
① 静态请求配置
根据配置得知静态资源的访问不经过tomcat 服务器,而是Nginx代理进行处理,会在指定的root 网站根目录找
② 动态请求配置
④ 配置错误跳转页面 当出现错误时 会在网站根目录(/usr/webapps/nginx/)查找 相应的页面,目前设定了404.html 50x.html
本文详细介绍了如何配置Nginx作为代理服务器与Tomcat整合,实现负载均衡。首先,通过安装和配置两个Tomcat实例,设置不同端口并创建index.jsp页面。接着,在Nginx配置文件中进行相应的负载均衡设置,确保在服务器故障时能自动切换。同时,实现了动静分离,静态资源由Nginx直接处理,动态请求则转发至Tomcat。最后,配置了错误页面以提供更好的用户体验。
1869

被折叠的 条评论
为什么被折叠?



