Nginx + Tomcat整合

本文详细介绍了如何配置Nginx作为代理服务器与Tomcat整合,实现负载均衡。首先,通过安装和配置两个Tomcat实例,设置不同端口并创建index.jsp页面。接着,在Nginx配置文件中进行相应的负载均衡设置,确保在服务器故障时能自动切换。同时,实现了动静分离,静态资源由Nginx直接处理,动态请求则转发至Tomcat。最后,配置了错误页面以提供更好的用户体验。

参考文件: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

这里写图片描述

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值