当前位置: 首页 > news >正文

Nginx +Tomcat架构的必要性与应用示例

一、Nginx +Tomcat整合的必要性

Nginx+Tomcat整合的必要性
Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱。虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很多。
Nginx可以通过如下两种方式来实现与Tomcat的耦合。
序号说明
1

【将静态页面请求交给Nginx,动态请求交给后端Tomcat处理】。

        即:请求来临之后,先全部到达Nginx服务器,Nginx服务器会对请求进行过滤(通过location实现判断请求URL的静态与动态):

《1》若判断请求时静态则Nginx服务器自己找到静态资源处理后直接返回给客户端;

《2》若判断请求时动态则Nginx服务器会把请求转发给Tomcat服务器,Tomcat服务器处理完成后将结果返回给Nginx,Nginx在返回给客户端。具体情况如下图所示:

2

【将所有请都交给后端的Tomcat服务器处理,同时利用Nginx自身的负载均衡功能,进行多台Tomcat服务器的负载均衡】。

        即:请求先到达Nginx服务器,Nginx服务器通过负载均衡策略将请求分发到后端的Tomcat服务器上,Tomcat服务器与数据库交互处理完成业务功能后返回结果给Nginx服务器,Nginx服务器再将结果返回给客户端。

《1》若想使Nginx与Tomcat的效率更高,可以将静态的资源放置在Nginx服务器中,直接让Nginx服务器处理返回给客户端;对于动态的资源内容通过Nginx的负载均衡策略传递给Tomcat处理后返回结果给Nginx服务器,Nginx服务器再将结果返回给客户端。.

《2》若访问量十分巨大(如每天有几百万、上千万的访问),首先要做的就是扩展Tomcat服务器;其次静态资源内容就不能只放在Nginx服务器上了,还需要将这些静态资源放到CDN中。

二、Nginx +Tomcat动静分离配置示例

 2.1、Nginx+Tomcat动静分离配置示例

#Nginx +Tomcat动静分离配置示例
server { listen 80; server_name www.ixdba.net; root /web/www/html;#这是Nginx处理的静态资源(即:url带/img/的请求都是到【/web/www/html/img/】路径下查找资源返回) location /img/ { alias /web/www/html/img/; }#这是Nginx将动态内容(以.jsp和.do结尾的文件都反向代理给后端的Tomcat处理,且配置了一些反向代理的优化配置)location ~ (\.jsp)|(\.do)$ { proxy_pass http://192.168.1.16:8080; proxy_redirect off;proxy_set_header Host $host;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;proxy_send_timeout 90;proxy_read_timeout 90;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;} 
} 

 2.2、root与alias的区别

root与alias的区别

alias指令和root指令的区别是:

《1》【alias指定的目录是当前目录】;

《2》【root指定的是根目录】;

一般况下,建议在【location  / 】中通过【root指令来配置根目录】,而在【其它目录匹配的位置使用alias指令】。

序号说明
1

location  /i {	                     # www.a.com/i/123.gifroot  /var/www/html/images/;   #/var/www/html/images/i/123.gif
}

这个location段配置中,如果url请求【/i/logo.gif】,那么Nginx将会在服务器上查找【/var/www/html/images/i/logo.gif】文件。

2
location  /i {   					  #www.a.com/i/123.gifalias  /var/www/html/images/;   #/var/www/html/images/123.gif
}

在这个location段配置中,如果url请求【/i/logo.gif】,那么Nginx将会在服务器上查找【/var/www/html/images/logo.gif】文件,也就是说请求的url中location后面的部分会被追加到alias指定的目录后面,而location后面的【 /i 】路径将被自动丢弃。

三、Nginx +Tomcat多tomcat负载均衡配置示例

        假设有三台Tomcat服务器,分别开放不同的端口,地址分别是:
【主机192.168.12.131开放8000端口】【主机192.168.12.132开放8080端口】【主机192.168.12.133开放8090端口】对应的Nginx配置文件中相关配置代码如下:

#Nginx+Tomcat负载均衡配置示例
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;tcp_nopush     on;tcp_nodelay    on;#keepalive_timeout  0;keepalive_timeout  65;server_names_hash_bucket_size 128;client_max_body_size 20m;client_header_buffer_size 32k;large_client_header_buffers 4 32k;gzip  on;gzip_min_length 1k;gzip_buffers    4    16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;upstream  mytomcats { server 192.168.1.131:8000 max_fails=3 fail_timeout=20s; server 192.168.1.132:8080 max_fails=3 fail_timeout=20s;server 192.168.1.133:8090 max_fails=3 fail_timeout=20s;ip_hash;} server { listen 80; server_name www.ck.net; access_log logs/ck.access.log main;#当客户端请求的是以(.jpg .gif .png .swf .flv .wma .wmv .asf .mp3 .mmf .zip .rar)结尾的这类静态资源文件时,Nginx直接从Nginx服务器本机的【/web/www.html/】路径下查找返回给客户端location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { root /web/www/html/; }#当客户端的请求处理上面提到的静态资源外全部都走这个反向代理到后端的Tomcat进行处理,Tomcat处理完成后将结果返回给Nginx服务器,Nginx服务器再将结果返回给客户端location / {proxy_pass http://mytomcats; include    /usr/local/nginx/conf/proxy.conf;} } 
#这是【/usr/local/nginx/conf/proxy.conf】文件的内容
proxy_redirect off;
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_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

文章转载自:

http://fUhq7RQc.bqmsm.cn
http://a81SvOom.bqmsm.cn
http://GfVkczJM.bqmsm.cn
http://xEVw8UpR.bqmsm.cn
http://zhCbIxql.bqmsm.cn
http://ZpXOS1tw.bqmsm.cn
http://2JCswWKA.bqmsm.cn
http://i6Tnr4F8.bqmsm.cn
http://uJ0gtoqC.bqmsm.cn
http://c98dGQ07.bqmsm.cn
http://jijeFFK3.bqmsm.cn
http://Hrl3JrTd.bqmsm.cn
http://Qk8V0oyX.bqmsm.cn
http://AhXCeOF1.bqmsm.cn
http://8tDdithd.bqmsm.cn
http://94oMwP4C.bqmsm.cn
http://5I0ZdZ8Q.bqmsm.cn
http://tYNs16St.bqmsm.cn
http://evIVn5Tk.bqmsm.cn
http://sUBFXBb9.bqmsm.cn
http://51vY2CHy.bqmsm.cn
http://HetSu44c.bqmsm.cn
http://u87P2elq.bqmsm.cn
http://eYU5xUeA.bqmsm.cn
http://eWsvcXSn.bqmsm.cn
http://4EC7fNma.bqmsm.cn
http://vvP3Od7G.bqmsm.cn
http://GqydiftQ.bqmsm.cn
http://4dvH5TIb.bqmsm.cn
http://yhcuCpDQ.bqmsm.cn
http://www.dtcms.com/a/369197.html

相关文章:

  • 沙堆状态的可视化图和雪崩分布
  • JavaWeb —— 异常处理
  • ppp与ip类型wan对比
  • leetcode399.除法求值
  • 电磁波成像(X射线、CT成像)原理简介
  • RikkaHub:安卓原生AI聊天新体验
  • Linux之Ubuntu桌面化操作系统的安装
  • CASToR 生成的文件进行转换
  • AI架构师的思维方式与架构设计原则
  • 软考 系统架构设计师系列知识点之杂项集萃(140)
  • 修改上次提交的Git提交日志
  • 【可信数据空间-连接器状态监控-Java代码集成】
  • C语言(长期更新)第15讲 指针详解(五):习题实战
  • 全球汽车氮化镓技术市场规模将于2031年增长至180.5亿美元,2025-2031年复合增长率达94.3%,由Infineon和Navitas驱动
  • .Net程序员就业现状以及学习路线图(四)
  • 垃圾回收算法详解
  • 【QT 5.12.12 打包-Windows 平台下】
  • 2025高教社数学建模国赛B题 - 碳化硅外延层厚度的确定(完整参考论文)
  • 【设计模式】UML 基础教程总结(软件设计师考试重点)
  • 三维聚类建模
  • Web 转发机制深度解析
  • 鸿蒙NEXT自定义能力详解:从基础使用到高级技巧
  • Coze源码分析-资源库-删除提示词-前端源码
  • leedcode 算法刷题第二七天
  • 水上乐园票务管理系统设计与开发(代码+数据库+LW)
  • 天顶围棋(PC端)新手指南:3步完成对弈设置离线围棋游戏推荐:天顶围棋(PC端)实测解析 天顶围棋(PC端)避坑指南:新手设置全攻略
  • 同分异构体
  • 半年报中的FPGA江湖:你打你的,我打我的
  • 【Leetcode】高频SQL基础题--180.连续出现的数字
  • 高级RAG策略学习(六)——Contextual Chunk Headers(CCH)技术