使用nginx和tomcat配置反向代理和动静分离
背景
本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术。使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat。但是一般很少会有人将Tomcat作为用户直接访问的服务器的,一般都是使用nginx或者Apache进行反向代理。我使用的是nginx。nginx是一个俄罗斯程序员开发的服务器程序,它本身只能提供静态资源的服务,但它的优点在于并发访问量可以达到非常大的水平。
反向代理的优点
反向代理的主要优点是提高并发访问数。单独一个Tomcat服务器能提供的并发访问数不高,如果在主机上部署多个Tomcat服务器,使用nginx进行反向代理,动态调整用户的请求到不同的Tomcat服务器(这个过程称为负载均衡),就可以使并发访问量和单个Tomcat服务器相比得到成倍的提升。
动静资源分离也常常和反向代理在一起被提起,比如你部署了一个Java Web应用,这是一个动态资源,需要Tomcat提供服务(由反向代理实现),但你的网站上同时还有其他的比如纯HTML的网页、图片等等静态资源,这些静态资源就可以由nginx直接提供给访问者,减少了调用Tomcat而产生的多余资源消耗,同样静态资源可以获得相当大的一个并发访问量。
可以画一张图来更清晰地表明反向代理的工作流程。
用户请求动态资源

用户请求静态资源

具体配置方法
配置的方法有很多,我以我自己的实现方法来进行讲解。
首先找到nginx的配置文件nginx.conf。如果是使用yum安装的nginx那么它的默认路径是在/etc/nginx/中。在该文件中找到:
server {
listen 80;
server_name localhost;
location / {
root /user/share/nginx/html;
index index.html index.htm;
}
……
也有可能和上述内容有些许不同,重点是listen 80,只要找到它,就确定了位置。
80端口一般代表http协议,也就是我们在浏览器上输入网址或者IP地址时默认使用的访问协议。server_name用于配置虚拟主机,我们现在暂时用不到。重点在location。location后面代表访问的虚拟目录,/代表根目录,,也就是直接输入域名或IP地址访问的目录,以本地主机为例,就是直接在浏览器里输入127.0.0.1。在location的大括号里面,root代表的是虚拟目录映射在本地主机上的实际目录,如果是使用yum方式安装的nginx,那么它的默认访问目录是/user/share/nginx/html。index后面代表的是该目录的首页文件,像示例中就设定了首页文件为index.html或者index.htm。
假如我们要用nginx反向代理tomcat,并且希望在浏览器直接输入主机的IP地址时访问到nginx默认的首页,而输入主机的IP地址/tomcat时访问到tomcat上的内容,我们就要这样配置。
server {
listen 80;
server_name localhost;
location / {
root /user/share/nginx/html;
index index.html index.htm;
}
location /tomcat {
proxy_pass http://127.0.0.1:8080;
}
……
加上去的内容就相当于告诉nginx,在用户访问IP地址/tomcat时,就将访问请求传递到8080端口(因为tomcat默认运行在8080端口,如果修改过tomcat默认运行端口,就将8080改成修改后的端口号)。
这样配置完成后,我们就同时实现了动静资源分离和反向代理。直接访问IP地址时,nginx给用户的是静态资源,减小计算资源的消耗,访问IP地址/tomcat时则由tomcat提供服务,实现了反向代理。
上面讲的是最基本的配置反向代理和动静分离的方法,还有更加高级的方法,比如设置不同的三级域名访问到不同的目录,动静分离特定格式的文件等等。在此我不做展开,大家有兴趣可以去网上寻找其他资料。
使用nginx和tomcat配置反向代理和动静分离的更多相关文章
- Nginx+apache/Tomcat实现反向代理与动静分离
其实本人比较喜欢nginx跑静态和做负载反向代理,动态php还是交给apache处理比较稳定,jsp就交给tomcat.resin或jboss.nginx跑静态的能力是无与伦比的,是目前web服务器里 ...
- Nginx+Tomcat实现反向代理及动静分离
Nginx+Tomcat实现反向代理及动静分离 时间 2014-07-07 15:18:35 51CTO推荐博文 原文 http://yijiu.blog.51cto.com/433846/143 ...
- Nginx+Tomcat实现反向代理与动静分离
1. 什么是动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时通过不同的容器来处理. 2. ...
- Nginx总结(五)如何配置nginx和tomcat实现反向代理
前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要 ...
- 如何配置nginx和tomcat实现反向代理?
什么是反向代理 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务 ...
- nginx和tomcat实现反向代理、负载均衡和session共享
这类的文章很多,nginx和tomcat实现反向代理.负载均衡实现很容易,可以参照http://blog.csdn.net/liuzhigang1237/article/details/8880752 ...
- nginx反向代理(动静分离)
使用反向代理(动静分离)可以让nginx专注静态内容,把动态请求交给apache来处理,发挥各自的优势,而且整个架构更加清晰: 这里假设你已经搭建好了nginx环境; 为了简单起见,就不用源码编译安装 ...
- Nginx 反向代理功能-动静分离
Nginx 反向代理功能-动静分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- CentOS7 Nginx安装及配置反向代理
背景: Mono (Mono JIT compiler version 5.4.0.201 ) jexus-5.8.2-x64(<CentOS7 安装 jexus-5.8.2-x64>) ...
随机推荐
- Mybatis 处理日期格式自动转换
java.lang.String和java.util.Date之间自动转换 @DateTimeFormat(pattern="yyyy-MM-dd")//页面写入数据库时格式化 @ ...
- js在HTML中的三种写法
1.内联样式 内联样式分为两种,一是直接写入元素的标签内部 <html> <title>js样式内联写法</title> <meta http-equiv=& ...
- CMM
CMM CMM的基本概念 CMM(Capability Maturity Model for Software) 它是对于软件组织在定义,实施,度量,控制和改善其软件过程的实践中各个发展阶段的描述.其 ...
- CentOS 7 & Chinese Fonts bug
CentOS 7 & Chinese Fonts bug # check $ yum grouplist $ yum grouplist hidden # root $ yum groupin ...
- [NOIP2004] 提高组 洛谷P1089 津津的储蓄计划
题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里 ...
- msp430入门学习13
msp430的定时器--Timer_B(定时器B)
- vim fulerformat的设置
在vim中设置选项,有注释很容易明白: set laststatus=1 "2总显示最后一个窗口的状态行,1窗口多于一个时显示最后一个窗口的状态行,0不显示最后一个窗口的状态行 fulerf ...
- Jam's balance set 暴力
Jim has a balance and N weights. (1≤N≤20)(1≤N≤20) The balance can only tell whether things on differ ...
- HDU 5641 King's Phone【模拟】
题意: 给定一串密码, 判断是否合法. 长度不小于4 不能重复经过任何点 不能跳过中间点,除非中间点已经经过一次. 分析: 3*3直接记录出可能出现在两点之间的点,直接模拟就好. 注意审题,别漏了判断 ...
- Android GIS开发系列-- 入门季(15) 网络图层加载
一.首先我们来看一个网络图层: http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer,这是全 ...