Nginx+Tomcat实现反向代理及动静分离
Nginx+Tomcat实现反向代理及动静分离
通常tomcat部署结构
通常tomcat前端是nginx或apache,后端都为tomcat,也就意味着无论前端是什么角色都是以代理的方式进行工作的
但是要注意的是如果基于nginx做反向代理,转发请求到tomcat的时候是基于http协议进行转发的
但注意的是tomcat的连接器有httpajp jk2 jserv
而如果基于nginx做转发的话只支持http做转发
而如果apache做代理转发的话,几乎常用协议都支持
但常用的连接类型都是ajp协议,因为ajp协议可以工作在二进制模式下,而http协议都是工作在文本模式下,所以ajp的效率要比http要高效
因此要部署一个tomcat前端web服务器很多时候可以使用apache
使用nginx反向代理用户请求至tomcat
规划如下:
|
服务器角色 |
服务器IP |
|
Nginx |
10.0.10.62 |
|
Tomcat |
10.0.10.61 |
配置Tomcat
还原配置文件并 修改配置文件
[root@node1 conf]#catalina.sh stop
[root@node1 conf]#mv server.xml server.xml.bak2
[root@node1 conf]# cp server.xml.bak server.xml
加入用户
[root@node1 conf]#vim tomcat-users.xml
<rolerolename="manager-gui"/> #
定义管理组,分别是信息页面以及管理页面
<role rolename="admin-gui"/>
<userusername="tomcat" password="tomcat"roles="manager-gui,admin-gui"/> # 将用户tomcat加入至这两个组内
创建网站目录
[root@node1 conf]#mkdir /tomcat/app1
创建host主机
[root@node1 conf]#vim server.xml
加入参数
<Host name="www.test.com" appBase= "/tomcat/app1"
unpackWARs="true"autoDeploy="true">
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
<Context path="/"docBase="/tomcat/app1" />
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
prefix="www_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"/>
</Host>
#path 相当于uri的路径
更改默认主机
<Engine name="Catalina" defaultHost="www.test.com">
更改端口
<Connector port="80" protocol="HTTP/1.1"
启动服务
[root@node1 conf]#catalina.sh start
部署网站程序,步骤略,访问ip后返回如下页面

访问测试无误,继续之后的配置
配置Nginx
[root@node2nginx]# pwd
/etc/nginx
编辑配置文件,将所有的请求都代理至后端tomcat
[root@node2nginx]# vim nginx.conf
location / {
proxy_pass http://10.0.10.61:80;
}
保存退出,并检查语法
[root@node2nginx]# /usr/local/nginx/sbin/nginx -t
nginx: theconfiguration file /etc/nginx/nginx.conf syntax is ok
nginx:configuration file /etc/nginx/nginx.conf test is successful
访问测试

确保代理无误
将动态内容重定向至tomcat
再次编辑配置文件
[root@node2nginx]# vim nginx.conf
改为以下参数,凡是以jsp等动态页面的请求统统转发至10.0.10.61的80端口上
location / {
root /usr/shar/nginx/html;
index index.html;
}
location ~ \.(jsp|do)$ {
proxy_pass http://10.0.10.61:80;
}
访问测试,结果如下:

因为只将jsp跳转过来但是图片找不到,这时我们需要使用nginx来响应用户的静态请求
实现动静分离
将图片复制到nginx本地目录,这里我们为了方便并且为了目录的一致性,将其源码全部拷贝至nginx节点
[root@node2nginx]# mkdir -p /web/html
[root@node1tomcat]# scp -r app1 root@node2:/web/html
编辑nginx配置文件,修改如下:
server {
listen 8080;
server_name localhost;
index index.jsp;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /web/html;
index index.html;
}
}
server {
listen 80;
server_name localhost;
index index.jsp;
#charset koi8-r;
#access_log logs/host.access.log main;
location/ {
proxy_pass http://10.0.10.61:80;
}
location ~*\.(html|gif|jpg|jpeg|ico|swf|htm|xml)$ {
proxy_pass http://10.0.10.62:80;
}
location ~* \.(jsp|do)$ {
proxy_pass http://10.0.10.61:80;
}
}
访问测试,一切正常,如下所示

END, 谢谢各位
本文出自 “心情依旧” 博客,转载请与作者联系!
Nginx+Tomcat实现反向代理及动静分离的更多相关文章
- Nginx+Tomcat实现反向代理与动静分离
1. 什么是动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时通过不同的容器来处理. 2. ...
- 使用nginx和tomcat配置反向代理和动静分离
背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...
- Nginx+apache/Tomcat实现反向代理与动静分离
其实本人比较喜欢nginx跑静态和做负载反向代理,动态php还是交给apache处理比较稳定,jsp就交给tomcat.resin或jboss.nginx跑静态的能力是无与伦比的,是目前web服务器里 ...
- nginx反向代理(动静分离)
使用反向代理(动静分离)可以让nginx专注静态内容,把动态请求交给apache来处理,发挥各自的优势,而且整个架构更加清晰: 这里假设你已经搭建好了nginx环境; 为了简单起见,就不用源码编译安装 ...
- Nginx 反向代理功能-动静分离
Nginx 反向代理功能-动静分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 【转载】Nginx + Tomcat 实现反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服 ...
- Nginx反向代理之动静分离
我们已经知道了什么是正向代理与反向代理,这次我们就讲一下Nginx的动静分离的案例,其实质运用的就是反向代理,专门用一台服务器代理服务器上的图片资源. 想使用代理必然要配置代理,配置反向代理,必须要用 ...
- nginx反向代理、动静分离
环境:根据http://www.cnblogs.com/zzzhfo/p/6032095.html配置 方法一:根据目录实现动静分离 在web01创建image并上传一张图片作为静态页面 [root@ ...
- Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术
一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判 ...
随机推荐
- MAT
http://www.yrom.net/blog/2014/08/29/eclipse-mat/
- Android Launcher 详解
(1) Launcher的定义:Android系统启动后,加载的第一个程序,是其他应用程序的入口. (2) Launcher的构成:HomeScreen(1.workspace(A ...
- 学军NOIP2016模拟赛1
GTMD这么水的一套题没有AK T1:妥妥的二分答案,贪心check. T2:问题可以转化为最长上升(还是下降我记不住了)子序列. T3:发现点被覆盖上的顺序是一定的.求出这个顺序,第一个操作在线段树 ...
- 查询某个表或者所有表的字段说明 SQLServer
查询某个表或者所有表的字段说明SELECT [Table Name] = OBJECT_NAME(c.object_id), [Column Name] = c.name, [Des ...
- BZOJ3261 最大异或和 (可持久化Trie)
; len=; var x,y,z,n,m,tot,lx,i:longint; sum:..maxn] of longint; rt:..maxn] of longint; time,l,r:..ma ...
- Codis 集群搭建
Codis 集群搭建 1 安装go1.3.1 CentOS 7.0 安装go 1.3.1 1.1 下载go安装包 golang中国上下载 下载到Downloads下 1.2 解压 tar -zxf g ...
- Oracle PL/SQL高级应用 存储过程
有名字的Plsql块,成为Oracle的对象,在以后用到时可以直接调用. CREATE OR REPLACE PROCEDURE myproc(id IN varchar2) IS -IN 为输入参数 ...
- 如何在dede栏目设置中添加自定义字段(dede二次开发-纯抄贴)
如何在dede栏目设置中添加自定义字段 这个说法以前没有见到到,很少有客户会提出这样的二次要求,今天织梦者在网上转了一下看到了这样的一篇文章转过来与大家分享 鉴于这个教程没人发过,网上搜索的人也比较多 ...
- IE6 IE7下文字显示竖排的解决办法
IE下文字显示竖排的解决办法: white-space:nowrap;
- 去掉hint提示文字
想要去掉EditText的hint提示文字,首先需要给EditText的父控件加上如下两个属性,使其获得焦点: android:focusable="true" android:f ...