Nginx可以干许多事情,在这里我们主要使用Nginx的反向代理与负载均衡功能。

1、Nginx的下载安装

在安装Nginx前需要安装如下软件:

GCC  Nginx是C写的,需要用GCC编译

PCRE(Perl Compatible Regular Expression)  Nginx的Rewrite和HTTP模块会用到

zlib  Gzip会用到

OpenSSL  ssl用到

如下命令:

yum install gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

创建目录(nginx-src),从官方地址(http://nginx.org/)下载,解压,配置,编译,安装:

 mkdir nginx-src && cd nginx-src
 wget http://nginx.org/download/nginx-1.7.3.tar.gz
 tar xzf nginx-1.7.3.tar.gz
 cd nginx-1.7.3
 ./configure
 make
 make install
 whereis nginx
 nginx: /usr/local/nginx

默认的安装路径为:/usr/local/nginx;跳转到/usr/local/nginx/sbin目录下:

启动:./nginx
停止:./nginx -s stop

启动后查看是否启动成功,可以在浏览器中输入http://loalhost后有Nginx提示首页或者输入如下命令查看:

ps -ef|grep nginx

类似如下的结果表示成功启动:

查看nginx的版本:

/usr/local/nginx/sbin/nginx -v

2、配置Nginx服务器组

创建两个nginx-sample-01与nginx-sample-02的Spring Boot服务,然后修改服务端口分别为:8081与8082,并且添加一个简单的服务类,代码如下:

8081端口的nginx-sample-01项目:

@RestController
public class TestCtrl {

    @RequestMapping(value="/")
    public void nginx( ) throws Exception {
    	System.out.println("nginx01---------------");
    }
}

8082端口的nginx-sample-02项目:

@RestController
public class TestCtrl {

    @RequestMapping(value="/")
    public void nginx( ) throws Exception {
    	System.out.println("nginx02---------------");
    }
}

然后打包为jar后,放到CentOS服务器上。使用如下类似的命令启动Web服务。

java -jar xxx.jar

现在有两个Spring Boot对外提供服务,Nginx来做负载均衡。编辑/usr/local/nginx/conf下的nginx.conf文件,添加upstream配置,这是配置一组被代理的服务器地址。

 upstream mysvr {
        server 192.168.2.129:8081;
        server 192.168.2.129:8082;
    }

server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://mysvr;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

 }

重启nginx服务器后,在浏览器中访问http://localhost,这时候如果有如下输入,则说明配置生效。

nginx01---------------------
nginx02---------------------
nginx01---------------------
nginx02---------------------
...

nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....

将nginx添加到系统服务,这样我们就可以方便的进行常用操作了。

# vi /etc/init.d/nginx

打开nginx后,添加如下现行代码:

# chkconfig: 2345 85 15
# Startup script for the nginx Web Server
# chmod +x /etc/init.d/nginx
# chkconfig --add nginx
# chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off

成功以后就可以使用如下命令来操作nginx了。

service nginx start/stop/reload..

3、nginx其它负载均衡

(1)ip_hash  nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session。但是可能获取不到正确的ip地址,如nginx之前还有代理,或者nginx后端还有分流的情况,都要考虑。

(2)upstream_hash nginx新版本中可支持读取cookie值,所以也可以改成 hash   $cookie_jsessionid;假如在php中配置的session为无cookie方式,配合nginx自己的一个userid_module模块就可以用nginx自发一个cookie。

(3)使用nginx sticky实现基于cookie的负载均衡   http://www.ttlsa.com/nginx/nginx-modules-nginx-sticky-module/

(4)一致性hash算法 可以使用第三方moduler的一致性hash算法来分配请求。

参考如下博文了解这个算法:http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html

github下载:https://github.com/replay/ngx_http_consistent_hash
unzip ngx_http_consistent_hash-master.zip
./configure --add-module=/home/mazhi/Downloads/ngx_http_consistent_hash-master
make
make install

修改mysvr服务器组,如下:

upstream mysvr {
        consistent_hash $request_uri;
        server 10.10.20.20:8081;
        server 10.10.20.20:8082;
}

剑指架构师系列-Nginx的安装与使用的更多相关文章

  1. 剑指架构师系列-MySQL的安装及主从同步

    1.安装数据库 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-commun ...

  2. 剑指架构师系列-Redis安装与使用

    1.安装Redis 我们在VMware中安装CentOS 64位系统后,在用户目录下下载安装Redis. 下载redis目前最稳定版本也是功能最完善,集群支持最好并加入了sentinel(哨兵-高可用 ...

  3. 剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot

    1.Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要 ...

  4. 剑指架构师系列-Linux下的调优

    1.I/O调优 CentOS下的iostat命令输出如下: $iostat -d -k 1 2 # 查看TPS和吞吐量 参数 -d 表示,显示设备(磁盘)使用状态:-k某些使用block为单位的列强制 ...

  5. 剑指架构师系列-MySQL调优

    介绍MySQL的调优手段,主要包括慢日志查询分析与Explain查询分析SQL执行计划 1.MySQL优化 1.慢日志查询分析 首先需要对慢日志进行一些设置,如下: SHOW VARIABLES LI ...

  6. 剑指架构师系列-Logstash分布式系统的日志监控

    Logstash主要做由三部署组成: Collect:数据输入 Enrich:数据加工,如过滤,改写等 Transport:数据输出 下面来安装一下: wget https://download.el ...

  7. 剑指架构师系列-ActiveMQ队列的使用

    安装ActiveMQ只需要下载包后解压,然后就可以启动与关闭ActiveMQ了,如下: ./activemq start ./activemq stop 访问管理页面: http://10.10.20 ...

  8. 剑指架构师系列-spring boot的logback日志记录

    Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...

  9. 剑指架构师系列-ftp服务器

    1.安装FTP 我们在开发项目时,肯定需要专门的一台ftp服务器来存在上传的静态资源,今天我们就在CentOS下搭建一个ftp服务器. 1.安装vsftpd组件,安装完后,有/etc/vsftpd/v ...

随机推荐

  1. Windows10+Docker搭建分布式Redis集群(一)

    摘要,Docker for Windows 仅支持专业版 目录 第一步:检查系统支持虚拟化 第二步:下载Docker对应版本 第三步:配置镜像加速 第一步:检查系统是否支持虚拟化 Docker前提是需 ...

  2. 深入浅出Lua虚拟机

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:郑小辉 | 腾讯 游戏客户端开发高级工程师 写在前面:本文所有的文字都是我手工一个一个敲的,以及本文后面分享的Demo代码都是我一行一 ...

  3. vi和vim编辑器

    VI vi是一种计算机文本编辑器,由美国计算机科学家比尔·乔伊(Bill Joy)完成编写,并于1976年以BSD协议授权发布. VIM Vim是从vi发展出来的一个文本编辑器.其代码补完.编译及错误 ...

  4. hdu 1880 魔咒字典

    https://vjudge.net/problem/HDU-1880 题意:略 思路: 一开始就是想到了正确的思路,但是代码写炸了,死活过不了.这题嘛,就是建议一个魔咒与咒语的双向映射.首先用字符串 ...

  5. linux centos-7.2-64bit 安装配置启动nginx

    1.安装依赖包yum -y install openssl openssl-develyum install pcre*yum install openssl*yum install zlib yum ...

  6. React-Native(二):React Native开发工具vs code配置

    从网上翻阅了一些开发react-native的开发工具时,发现其实可选的工具还是比较多的Sublime Text,WebStrom,Atom+Nuclide,vs code 等.因为我用.net生态环 ...

  7. Spring(六):Spring&Struts2&Hibernate搭建的blog项目

    经过断断续续的学习.累积,终于基于别人的开源blog项目,变成了自己的第一个相对完整点的blog项目. 计划暂时把这个blog程序暂停------有更多(工作中用到的)东西需要去做,因此学习SSH b ...

  8. Struts(九):值栈(OGNL)

    引言 在我们开发过程中,往往会使用一个对像传递到一个具体的action中,之后到跳转页面中访问对应对象的具体的参数. 比如:我们搭建一个struts2项目: 回顾下如何搭建strut2: 1.下载的s ...

  9. WPF绘制光滑连续贝塞尔曲线

    1.需求 WPF本身没有直接把点集合绘制成曲线的函数.可以通过贝塞尔曲线函数来绘制. 贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控制开始和结束方向. Quadrati ...

  10. Spring Boot简单应用——会员管理系统

    简介 本项目是使用Spring Boot编写的一个简单的会员管理系统. 提供了会员的解决方案,主要有会员模块,管理员模块,礼品模块,商品模块,会员等级模块,生日提醒模块,积分模块,详细模块如下图 准备 ...