今天又是新的一周,我养足了精神去对待新一周的工作,但是今天到公司发现还是有一点空闲时间的,所以就想与之前接触过的Nginx再交往得更深一点儿。

什么是Nginx:

Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支撑5万并发链接,但是实际生产环境能到2-3万并发连接数(只是听说),并且cpu、内存等资源消耗缺非常低,运行非常稳定。

Nginx在实际生产中的应用场景:

上面已经说了,Nginx是一款高性能的http服务器,所以它可以提供单独的http服务,经常在开发中用作静态网页服务器来使用;还有一点就是它的核心应用,即反向代理服务器负载均衡:其实反向代理这一点并不难理解,就是通过配置将服务器的IP和指定域名进行映射即可。至于负载均衡,就是当某个网站的访问量达到一定程度后,并且单台服务器不能提供服务的情况下,我们就需要借助软件技术能够让多台服务器轮流分担访问压力,目的是达到不会因为某台服务器负载高宕机而某台服务器闲置的这种不公平情况,经常我们会采取某种轮询机制来让它们正常工作。

什么是负载均衡(Load Balance):

一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,但却无法在一秒钟内处理上百万个甚至更多的请求。但若能将多台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是负载均衡最初的基本设计思想。

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。

在Linux环境上安装Nginx:

第一步:安装GCC,因为Nginx是用C语言开发的,所以在安装的时候需要编译:
yum install –y gcc-c++
第二步:需要安装第三方软件:
  • 安装PCRE yum install –y pcrepcre-devel
  • 安装ZLIB yum install –y zlibzlib-devel
  • 安装OPENSSL yum install –y opensslopenssl-devel
第三步: 将Nginx源码包上传到linux系统(我这里使用的是nginx-1.8.0.tar.gz),并且解压缩:
tar -xf nginx-1.8.0.tar.gz
第四步:配置参数,进入nginx的解压目录下,执行以下命令:【注意,在配置命令中指定了安装Nginx的临时目录/var/temp/nginx,必须手动创建该结构的目录mkdir /var/temp/nginx -p】
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
第五步:编译Nginx源码包:
make
第六步:安装Nginx:
make install
第七步:查看Nginx安装目录,如果存在conf、html、sbin三个目录,则基本安装成功:
第八步:启动Nginx、停止Nginx、重启Nginx:
启动:进入/usr/local/nginx/sbin目录下执行命令 ./ngnix
重启:./nginx–s reload
快速停止:./nginx -s stop
完整停止:./nginx -s quit
第九步:打开浏览器输入安装了Nginx的服务器IP地址即可出现欢迎页面,则安装成功。

Nginx实现负载均衡:

需求:当我们在浏览器访问某一地址时,后台由多个不同端口的服务器来轮询响应?

实现步骤:

第一步、准备2台或2台以上的Tomcat服务器,并且保证它们的端口号不发生冲突并能正常访问,我这里准备了2台并且在每个Tomcat中扔进一个运行正常的web项目。

第二步、配置Nginx的负载均衡,我这里采用轮询+权重的机制来实现的,说明一点:正常情况下负载均衡的配置是通过域名映射来访问的,我这儿没有映射域名,如果各位想通过映射域名则配置域名然后去修改hosts文件即可。

       切换到Nginx安装目录下,进入conf目录,编辑nginx.conf配置文件(如果想了解更详细的配置说明,推荐http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html)

第三步、通过配置文件中的配置,访问资源,最后发现俩个Tomcat服务器上的web应用轮询响应(这里本应该给各位上传一段测试后的视频的,但是咨询了一下午没能做到,还望各位将就一下吧)。

后期还会给各位分享关于Nginx的东西,希望各位支持。

 
 

简单聊聊不可或缺的Nginx反向代理服务器--实现负载均衡【上篇】的更多相关文章

  1. Nginx反向代理服务器、负载均衡和正向代理

    Nginx("engine x")是一个高性能的 HTTP 和反向代理服务器,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日.官方测试 nginx 能够支撑5万 ...

  2. nginx反向代理服务器以及负载均衡,从安装到配置

    nginx的具体作用不用细说,很强大,做负载均衡.反向代理服务器解决前端跨域问题等等.下面是nginx的安装过程 首先nginx主要的依赖: pcre. pcre-devel zlib zlib-de ...

  3. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  4. 基于Nginx反向代理及负载均衡

    基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...

  5. Nginx反向代理、负载均衡及日志

    Nginx反向代理.负载均衡及日志 1.原理图   2.正向代理与反向代理 (1)代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后 ...

  6. Nginx反向代理与负载均衡应用实践(一)

    Nginx反向代理与负载均衡应用实践(一) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...

  7. Nginx反向代理实现负载均衡配置图解

    Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...

  8. nginx反向代理、负载均衡以及分布式下的session保持

    [前言]部署服务器用到了nginx,相比较于apache并发能力更强,优点也比其多得多.虽然我的项目可能用不到这么多性能,还是部署一个流行的服务器吧! 此篇博文主要学习nginx(ingine x)的 ...

  9. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

随机推荐

  1. 基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。

    因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度数据用时约 20ms,并且算法和核心的大小是无关 ...

  2. 没有main方法真的不能执行代码了吗?

    今天看北大慕课遇到一段代码,于是下载下来跑了一下,奇葩的是,没有main方法既没报错,还出了结果. 下面贴出代码: class InitialTest { public static void mai ...

  3. Nginx——在Windows环境下安装

    下载 Nginx是开源软件,用户可以访问 http://nginx.org/ 网站获取源码包或Windows二进制文件下载.其中1.13.x版本为开发版本,1.12.0版本为稳定版本.开发版本分支会较 ...

  4. LoadRunner11_录制Oracle数据库脚本

    [oracle环境] ①oracle:无需在本地安装oracle,但是oracle的odbc驱动一定要装:(我的安装路径为 D:\oracle ).安装好后在环境变量 " Path &quo ...

  5. AngularJS高级程序设计读书笔记 -- 指令篇 之 自定义指令

    2. 自定义指令(15-17 章) Module.directive(name, factory) 2.1 创建自定义指令的方法 Module.directive(name, factory) 示例 ...

  6. 为什么使用bootstrap在一个页面同时做两个轮播效果时,只有第一个有效??

    我们都知道使用bootstrap做轮播效果非常快,但是有时候一个页面会需要两个轮播:但这个时候再次使用bootstrap做轮播效果时就会失效:原因在于bootstrap的Carousel问题,只要修改 ...

  7. windows端口占用处理工具

    一.描述 笔者在最近使用tomcat时,老是会遇到这种端口占用的问题,便写了这个小的exe,用于解决windows下的端口占用问题. 好吧,其实是我实在记不住CMD下的那几行命令.这玩意的实现比较简单 ...

  8. if else的错误用法!

    在学习C语言的时候,我们会了解和认识if  else 的用法, 并在程序里面使用它来作为判断条件! if(表达式)       //先定义一个条件,如果成立,则循环if里面的语句. { 语句 } el ...

  9. java基础系列--Date类

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7126930.html 1.Date类概述 Date类是从JDK1.1就开始存在的老类,其提 ...

  10. angular.extend、angular.$watch、angular.bootstrap

    1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...