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 &quot;%r&quot; %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实现反向代理及动静分离的更多相关文章

  1. Nginx+Tomcat实现反向代理与动静分离

    1. 什么是动静分离  所谓动静分离就是通过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时通过不同的容器来处理. 2. ...

  2. 使用nginx和tomcat配置反向代理和动静分离

    背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...

  3. Nginx+apache/Tomcat实现反向代理与动静分离

    其实本人比较喜欢nginx跑静态和做负载反向代理,动态php还是交给apache处理比较稳定,jsp就交给tomcat.resin或jboss.nginx跑静态的能力是无与伦比的,是目前web服务器里 ...

  4. nginx反向代理(动静分离)

    使用反向代理(动静分离)可以让nginx专注静态内容,把动态请求交给apache来处理,发挥各自的优势,而且整个架构更加清晰: 这里假设你已经搭建好了nginx环境; 为了简单起见,就不用源码编译安装 ...

  5. Nginx 反向代理功能-动静分离

    Nginx 反向代理功能-动静分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. 【转载】Nginx + Tomcat 实现反向代理

    通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服 ...

  7. Nginx反向代理之动静分离

    我们已经知道了什么是正向代理与反向代理,这次我们就讲一下Nginx的动静分离的案例,其实质运用的就是反向代理,专门用一台服务器代理服务器上的图片资源. 想使用代理必然要配置代理,配置反向代理,必须要用 ...

  8. nginx反向代理、动静分离

    环境:根据http://www.cnblogs.com/zzzhfo/p/6032095.html配置 方法一:根据目录实现动静分离 在web01创建image并上传一张图片作为静态页面 [root@ ...

  9. Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术

    一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判 ...

随机推荐

  1. webservice实验一

    实验目的:安装jdk1.6_21以后的版本,利用JAX-WS API自己发布webservice并调用,以及用wsimport生成webservice客户端代码调用一个免费的web服务(如webxml ...

  2. Makefile学习笔记

    ls -l 查看文件详细信息 1.gcc -E test.c -o test.i//预编译gedit test.i //查看:高级C 2.gcc -Wall -S test.i -o test.s// ...

  3. 关于我和Github不得不说的一些小事

    你好,我叫黄雅婷,学号是1413042031,网络工程142班.因为小时候家里有很多课外书,有关神话和科学方面的杂志和书籍等,所以从小就喜欢看书,现在比较不挑,什么书都喜欢看,就是给我本字典,我也能看 ...

  4. linux下的定时任务

    cronb命令 在Linux中,周期执行的任务一般由cron这个守护进程来处理.ps -ef | grep cron.cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron ...

  5. ios学习之 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系

    刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成功申请了真机调试,但是还是对其中的缘由一知半解.这篇文章就对Certificate.Provisioni ...

  6. RegexKitLite 正则表达式

    http://blog.csdn.net/zzfsuiye/article/details/6631466(转--讲得不错) 最 近做一个项目遇到从NSString中获取当中的IP地址使用 Regex ...

  7. session 原理 数据结构

    [原创]转载请保留出处:shoru.cnblogs.com 晋哥哥的私房钱 引言 在web开发中,session是个非常重要的概念.在许多动态网站的开发者看来,session就是一个变量,而且其表现像 ...

  8. 如何使用SnpEff 对SNP结果进行分析

    SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of ...

  9. (实用篇)PHP ftp上传文件操作类

    <?php /** * 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 ) */ class class_ftp { public $off; // 返回操作状态(成功/失败) publi ...

  10. lost+found目录

    If you run fsck, the filesystem check and repair command, it might find data fragments that are not ...