首先这里是centos7安装nginx+tomcat,我用的是腾讯云服务器。
先讲讲nginx吧
nginx
大名鼎鼎,相信很多人都听过,以前感觉很厉害,用了之后发现真的很厉害。nginx可以做以下几件事:
反向代理
负载均衡
动静分离
网页、图片缓存
需要明确的是nginx并不是应用服务器,也就是说nginx不能处理动态请求(和apache一样,熟悉apache应该知道),比如jsp、php等页面,nginx把这些请求转发给能处理这些页面的程序。
反向代理
好吧,之前我也为这个问题纠结挺久,为什么叫反向?既然有反向,那肯定有正向,现有客户端x,代理服务器y,最终服务器z,现在x直接访问z:x->z,通过代理服务器y:x->y->z,无论正反代理服务器y都是位于x、z之间,正反是根据代理服务器代理的是谁来判断的
正向:代理服务器y代理的是客户端,站在客户端的角度上是正向的,所以是正向代理
反向:代理服务器y代理的是最终服务器z,站在客户端的角度上是反向的,所以是反向代理
好吧,这是我的理解,可能不够详细,这里给大家推荐一片文章,介绍的挺好的:http://bbs.51cto.com/thread-967852-1-1.html
负载均衡
现在客户端所有请求都经过nginx了,那么nginx就可以决定将这些请求转发给谁,如果服务器A的资源更充分(CPU更多、内存更大等等),服务器B没有服务器A处理能力强,那么nginx就会吧更多的请求转发到A,转发较少的请求到服务器B,这样就做到了负载均衡,而且就算其中一台服务器宕机了,对于用户而言也能正常访问网站。
动静分离
借助于nginx强大的转发功能,可以通过配置实现网站的动态请求和静态文件进行分离,将动态请求发送到服务器A,将静态文件转发到服务器B,这样便于nginx做静态文件的缓存和后期对网站使用CDN。
大家可先去看看http://bbs.51cto.com/thread-967852-1-1.html这个,理解一下正向代理和反向代理,正向代理其实就像我们说的,反向代理就是nginx代理tomcat服务器,比如我们这里配置nginx+tomcat,我们通过80端口访问到的比如Test项目,其实是nginx访问了tomcat下的项目,我们错认为是访问了tomcat(资源服务器),其实是代理服务器从资源服务器取得。
一:下面开始安装nginx
1. 安装依赖包:
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
如果安装pcre或者zlib报错
Protected multilib versions: zlib-1.2.7-17.el7.x86_64 != zlib-1.2.7-15.el7.i686
去看看我这篇博客
http://blog.csdn.net/shouldnotappearcalm/article/details/64212868。
2。去nginx官网(http://nginx.org/en/download.html)下面下载,因为我用的centos,所以选了个稳定版的linux的版本。
3.下载完了之后通过xftp上传到了centos下面,我传到了/usr/nginx下面。然后就是解压(解压tar.gz文件的命令)嘛.
tar -xzvf 文件名
4.执行编译
进入 nginx 的目录
执行
./configure
5.安装Nginx
执行 make
make install
6.这里完了之后你不用再管这个/usr/nginx这个目录了。nginx安装到了/usr/local/nginx,你可以去看看。
7.启动nginx。
cd /usr/local/nginx
./sbin/nginx
这里记住以后启动命令就是(启动之前你可以先把tomcat关了,因为nginx会占用80端口)
./sbin/nginx
8.将端口号80开放
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
以上就是配置nginx
二:现在来做nginx和tomcat的负载均衡
1.在centos下面安装两个tomcat先测试,博主装的时候倒是也没什么问题,但是当我关掉一个tomcat在重启发现再关另一个tomcat就炸了,关不掉,而且关掉一个tomcat就不能访问80端口了,后来百度查了下server.xml(https://zhidao.baidu.com/question/292305520.html,这篇百度经验还算良心),这里我们只需要改三个。去改改tomcat下conf/server.xml,当时我看到的是这篇文章(http://www.cnblogs.com/jian-liu/p/6531152.html,知道了改哪些端口)
(1)
这里跟shutdown.sh有关,port指定Tomcat监听shutdown命令端口.终止服务器运行时,必须在Tomcat服务器所在的机器上发出,所以两个tomcat端口口不能一样,所以我是一个8005,一个8006(8006应该是没占用的,你可以用 netstat -tunlp |grep 8006
这个端口有没有被占用)。
(2)
"8080" maxThread="50" minSpareThreads="25" maxSpareThread="75"
enableLookups="false" redirectPort="8443" acceptCount="100" debug="0"
connectionTimeout="20000" disableUploadTimeout="true" />
这个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;,这一段我们要把这个8080改了,我改的一个8080,一个8090,你也要先看看端口是否被占用。
(3)
第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求,所以我改了一个8008,一个8009,
到这里就完成了基本的tomcat配置工作,
2.现在来修改/usr/local/nginx/conf下的nginx.conf
记得不要多打冒号什么的。
3.启动tomcat1,tomcat2,nginx重新加载配置文件
启动tomcat就不用说了,渠道tomcat目录下bin的start.sh
nginx重新加载配置文件
4.现在就完全配置成功了,我写了个简单的项目,里面一个index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
tomcatA
body>
html>
打了两个war包,一个里面的jsp是tomcatA,一个事tomcatB,然后传到两个tomcat下,我用nginx访问发现永远是tomcatA,然后百度了下,跟那个ip_hash有关,你把这个在nginx.conf里面删除了,就能看到轮换再来了测完了还是去吧ip_hash;这个加上吧。
ps:就到这里了,有问题留言。