剑指架构师系列-Nginx的安装与使用
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的安装与使用的更多相关文章
- 剑指架构师系列-MySQL的安装及主从同步
1.安装数据库 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-commun ...
- 剑指架构师系列-Redis安装与使用
1.安装Redis 我们在VMware中安装CentOS 64位系统后,在用户目录下下载安装Redis. 下载redis目前最稳定版本也是功能最完善,集群支持最好并加入了sentinel(哨兵-高可用 ...
- 剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot
1.Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要 ...
- 剑指架构师系列-Linux下的调优
1.I/O调优 CentOS下的iostat命令输出如下: $iostat -d -k 1 2 # 查看TPS和吞吐量 参数 -d 表示,显示设备(磁盘)使用状态:-k某些使用block为单位的列强制 ...
- 剑指架构师系列-MySQL调优
介绍MySQL的调优手段,主要包括慢日志查询分析与Explain查询分析SQL执行计划 1.MySQL优化 1.慢日志查询分析 首先需要对慢日志进行一些设置,如下: SHOW VARIABLES LI ...
- 剑指架构师系列-Logstash分布式系统的日志监控
Logstash主要做由三部署组成: Collect:数据输入 Enrich:数据加工,如过滤,改写等 Transport:数据输出 下面来安装一下: wget https://download.el ...
- 剑指架构师系列-ActiveMQ队列的使用
安装ActiveMQ只需要下载包后解压,然后就可以启动与关闭ActiveMQ了,如下: ./activemq start ./activemq stop 访问管理页面: http://10.10.20 ...
- 剑指架构师系列-spring boot的logback日志记录
Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...
- 剑指架构师系列-ftp服务器
1.安装FTP 我们在开发项目时,肯定需要专门的一台ftp服务器来存在上传的静态资源,今天我们就在CentOS下搭建一个ftp服务器. 1.安装vsftpd组件,安装完后,有/etc/vsftpd/v ...
随机推荐
- Python中使用hashlib进行加密的简单使用
import hashlib ''' 原文= '字符串' 哈希加密对象 = hashlib.加密算法( 原文.encode('utf-8') ) 密文 = 哈希加密对象.hexdigest() #密文 ...
- 南京邮电大学java第一次实验报告
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...
- [转]pymongo常用操作函数
pymongo 是 mongodb 的 python Driver Editor.记录下学习过程中感觉以后会常用多一些部分,以做参考. 1. 连接数据库 要使用pymongo最先应该做的事就是先连上运 ...
- 用 k8s 管理机密信息 - 每天5分钟玩转 Docker 容器技术(155)
应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret. Secret 会以密文的方式存储 ...
- 一文了解安卓APP逆向分析与保护机制
"知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...
- python pygame 安装和运行的一些问题
1.python安装过程中可以选择自动配置环境变量,可以避免手动配置,但是缺点是如果环境变量有问题,就得自己重新学习配置环境变量. 2.我自己想用python从游戏方面入手,所以在安装pygame过程 ...
- OpenGL平面阴影
几种绘制阴影的方法 在OpenGL中,比较常见的绘制阴影的方法有:shadow mapping,shadow volumes以及一种在红宝书上提及的适合在确定平面上绘制阴影的方法. 平面阴影 在确定的 ...
- p2p项目总结
1.关于ajax请求所要注意的地方:$.psot(url,json,callback,type) (1)url路径问题,在html中写绝对路径不能用EL表达式,EL表达式只能在jsp中使用 (2)js ...
- Mac终端开启代理
使用shadowsocks开启代理,只支持浏览器开启代理,其他软件是不能够开启代理的,因为这个问题,自己一直无法用本地终端 git clone 一些库,网上查找方法,总结如下: 步骤一:开启shado ...
- [BZOJ 2169]连边
Description 有N个点(编号1到N)组成的无向图,已经为你连了M条边.请你再连K条边,使得所有的点的度数都是偶数.求有多少种连的方法.要求你连的K条边中不能有重边,但和已经连好的边可以重.不 ...