千家信息网

Nginx与Tomcat怎么实现动静态分离和负载均衡

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容主要讲解"Nginx与Tomcat怎么实现动静态分离和负载均衡",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Nginx与Tomcat怎么实现动静态
千家信息网最后更新 2025年01月24日Nginx与Tomcat怎么实现动静态分离和负载均衡

本篇内容主要讲解"Nginx与Tomcat怎么实现动静态分离和负载均衡",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Nginx与Tomcat怎么实现动静态分离和负载均衡"吧!

一.nginx简介:

nginx一个高性能的http和反向代理服务器, 具有很高的稳定性和支持热部署、模块扩展也很容易。当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器,nginx采取了分阶段资源分配技术,处理静态文件和无缓存的反向代理加速,实现了负载均衡和容错,在这样高并发的访问情况下,能经受起高并发的处理。

二.nginx安装与配置

第一步:下载nginx 安装包

第二步:在linux上安装nginx

#tar zxvf nginx-1.7.8.tar.gz //解压#cd nginx-1.7.8#./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块

会报缺少pcre library错误,如图所示:

这时先执行第三步安装pcre ,然后在3执行一下,这就可以了

4.make && make install //编译并安装

5.测试一下安装配置是否正确,nginx安装在/usr/local/nginx

#/usr/local/nginx/sbin/nginx -t,如图所示:

第三步:在linux上安装pcre

#tar zxvf pcre-8.10.tar.gz //解压cd pcre-8.10./configuremake && make install//编译并安装

三.nginx +tomcat 实现动静态分离

动静态分离就是nginx处理客户端的请求的静态页面(html页面)或者图片,tomcat处理客户端请求的动态页面(jsp页面),因为nginx处理的静态页面的效率高于tomcat。

第一步:我们要配置nginx文件

#vi /usr/local/nginx/conf/nginx.conf

 #user nobody; worker_processes 1; error_log logs/error.log; pid    logs/nginx.pid;  events {   use epoll;   worker_connections 1024; }   http {   include    mime.types;   default_type application/octet-stream;   log_format main '$remote_addr - $remote_user [$time_local] "$request" '            '$status $body_bytes_sent "$http_referer" '            '"$http_user_agent" "$http_x_forwarded_for"';    access_log logs/access.log main;   sendfile    on; keepalive_timeout 65; gzip on;  gzip_min_length 1k;  gzip_buffers   4 16k;  gzip_http_version 1.0;  gzip_comp_level 2;  gzip_types text/plain application/x-javascript text/css application/xml;  gzip_vary on;    server {     listen    80 default;     server_name localhost;      location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面        {           root  /usr/tomcat/apache-tomcat-8081/webapps/root;            expires   30d; //缓存到客户端30天         }      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;     }       location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理         proxy_pass http://192.168.74.129:8081; //来自jsp或者do的后缀的请求交给tomcat处理       proxy_redirect off;       proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip       proxy_set_header x-real-ip $remote_addr;       proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;       client_max_body_size 10m;  //允许客户端请求的最大单文件字节数       client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数        proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间        proxy_read_timeout 90;   //连接成功后,后端服务器响应时间        proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小        proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置       proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2)       proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传     }       }   }

第二步:在tomcat 下的webapps/root下新建index.html静态页面,如图所示:

第三步:启动nginx服务

#sbin/nginx 如图所示:

第四步:我们页面访问 能正常显示正常的内容,如图所示:

第五步:测试nginx 和tomcat高并发的情况下处理静态页面性能如何?

采用了 linux ab网站压力测试命令来测试一下性能

1.测试一下nginx 处理静态页面的性能

ab -c 100 -n 1000

这个表示同时处理100个请求并运行1000次index.html文件,如图所示:

2.测试一下tomcat处理静态页面的性能

ab -c 100 -n 1000

这个表示同时处理100个请求并运行1000次index.html文件,如图所示:

相同的处理静态文件,nginx处理的静态性能比tomcat 好。nginx每秒能请求5388次,而tomcat只请求2609次。

总结:我们在nginx配置文件中,配置静态交给nginx处理,动态请求交给tomcat,提供了性能。

四.nginx +tomcat 负载均衡与容错

我们在高并发的情况下,为了提高服务器的性能,减少了单台服务器的并发压力,我们采用了集群部署,还能解决为了避免单台服务器挂掉,服务不能访问这种情况下,处理容错问题。

第一步:我们这边部署了两天tomcat服务器,192.168.74.129:8081和192.168.74.129:8082

第二步:nginx作为了代理服务器,客服端请求服务器端时,采用了负载均衡来处理,这样就能平均的把客服端请求分发到每一天服务器,这样减少服务器端的压力。配置nginx下的nginx.conf文件。

#vi /usr/local/nginx/conf/nginx.conf

 #user nobody; worker_processes 1; error_log logs/error.log; pid    logs/nginx.pid;  events {   use epoll;   worker_connections 1024; }   http {   include    mime.types;   default_type application/octet-stream;   log_format main '$remote_addr - $remote_user [$time_local] "$request" '            '$status $body_bytes_sent "$http_referer" '            '"$http_user_agent" "$http_x_forwarded_for"';    access_log logs/access.log main;   sendfile    on; keepalive_timeout 65; gzip on;  gzip_min_length 1k;  gzip_buffers   4 16k;  gzip_http_version 1.0;  gzip_comp_level 2;  gzip_types text/plain application/x-javascript text/css application/xml;  gzip_vary on;  upstream localhost_server {     ip_hash;     server 192.168.74.129:8081;     server 192.168.74.129:8082;   }    server {     listen    80 default;     server_name localhost;      location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面        {           root  /usr/tomcat/apache-tomcat-8081/webapps/root;            expires   30d; //缓存到客户端30天         }      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;     }      location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理        proxy_pass http://localhost_server; //来自jsp或者do的后缀的请求交给tomcat处理       proxy_redirect off;       proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip       proxy_set_header x-real-ip $remote_addr;       proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;       client_max_body_size 10m;  //允许客户端请求的最大单文件字节数       client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数        proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间        proxy_read_timeout 90;   //连接成功后,后端服务器响应时间        proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小        proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置       proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2)       proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传     }       }   }

说明:

1.upstream 中的server是指向服务器的ip(域名)和端口,后面还可以带参数

1)weight :设置服务器的转发权重 默认值是1。

2)max_fails : 是与fail_timeout配合使用,是指在fail_timeout时间段内,如果服务器转发失败次数超过max_fails设置的值,这台服务器就不 可用,max_fails默认值是1

3)fail_timeout :表示在该时间段内转发失败多少次就认为这台服务器不能用。

4)down:表示这台服务器不能用。

5)backup:表示使ip_hash设置的针对这台服务器无效,只有在所有非备份的服务器都失效后,才会向服务器转发请求。

2.ip_hash 设置是在集群的服务器中,如果同一个客户端请求转发到多个服务器上,每台服务器可能缓存同一份信息,这会造成资源的浪费,采用的ip_hash设置会把同一个客户端第二次请求相同的信息时,会转发到第一次请求的服务器端。但ip_hash不能和weight 同时使用。

到此,相信大家对"Nginx与Tomcat怎么实现动静态分离和负载均衡"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

服务 服务器 处理 静态 页面 文件 缓冲 客户 客户端 性能 如图 代理 均衡 大小 时间 缓冲区 缓存 测试 配置 最大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据备份网络安全的应急预案 django创建数据库 普陀区进口软件开发创造辉煌 网络净化联盟为什么要炸服务器 H5士兵扫雷买了服务器 贵阳发布网络安全在线答题答案 服务器读取数据的顺序 路由器CSDP服务器 ip网络技术与工程实践总结 软件开发与设计 虚拟运营商网络技术 服务器安全设备驱动打不上去 图书馆网络技术部年终终结 南宁良庆区软件开发多少钱 人体生物力学软件开发 数据库连接已打开 数字科技互联网平台 服务器怎么区分不同的客户端 迈克菲网络安全卸载 校园数据库安全设计方案 贵州专业网络技术服务五星服务 mysql数据库分组语句使用 软件开发去哪接活 ip网络技术与工程实践总结 机架式服务器跟云服务器的差别 山东学安全网络技术有限公司 nas本地服务器游戏 湖南十大互联网科技大咖 如何使用数据库发送邮件 oracle数据库工程师
0