Centos安装配置nginx+tomcat

首先这里是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的版本。

Centos安装配置nginx+tomcat_第1张图片

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

这样你就能通过80端口访问到nginx了。
Centos安装配置nginx+tomcat_第2张图片

以上就是配置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) protocol="AJP/1.3" />

第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求,所以我改了一个8008,一个8009,

到这里就完成了基本的tomcat配置工作,

2.现在来修改/usr/local/nginx/conf下的nginx.conf
Centos安装配置nginx+tomcat_第3张图片

记得不要多打冒号什么的。

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:就到这里了,有问题留言。

你可能感兴趣的:(nginx,linux)