上一篇我讲了正向代理和反向代理的概念,这个是为nginx做准备的前置技能,网上百度nginx可以知道nginx是什么:

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

nginx是个web服务器,反向代理服务器,电子邮件(IMAP/POP3)代理服务器,并发能力强。一般来讲,tomcat最大并发在500,并且就很卡了,而nginx可以轻松实现10W+的并发。这就是我们为什么要用nginx的原因。

好,了解了nginx是什么,为什么要用他,下面我们就来实际操作一下:

下载安装

  下载地址:http://nginx.org/en/download.html

下载最新版nginx:

  解压后可直接运行

或者使用cmd命令行进行启动,

启动:start nginx

关闭:nginx.exe –s stop 或  nginx.exe –s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

热部署/重新载入Nginx:nginx.exe -s reload

服务器访问:localhost:80  à  http://localhost/

出现如下所示即成功:

配置服务

Nginx安装ok后,下面我们来使他work,代理我们的服务。

比如我们原有一个叫girl的项目:ng路径下我们打印一下请求的一些信息

这里我们可以看到我们的tomcat启动的端口是8087;

然后我们在nginx的配置文件里进行配置:

首先路径是:

打开此配置文件:其他的配置信息我们先不需要关心,我们现在先初步学习,nginx的基础配置,让他可以代理我们的tomcat应用:

首先是server也就是nginx对外提供的服务,

服务监听配置中的listen ,就是nginx的监听端口,

Location下的proxy_pass需要和上流代理配置的 girl对应,代表我们所请求的

http://girl 都会被转发到上流代理配置的 localhost:8087 路径去

在上流代理配置中,我们加一个server localhost:8087,这代表一会我们将会代理的端口,也就是请求会转发到哪里。

至此,基本配置完成,我们来试一下,

Nginx访问路径:

Tomc访问:

可以看到,我们访问nginx的80端口的访问已经转发到了8087,应为我们可以看到和访问8087一样的结果页面了。

我们使用nginx的目的是进行代理分发,是做负载均衡的,所以想展示nginx的功能我们需要多个应用,这里我们在搭建一个简单的web应用在8080端口,其页面如下:

这样我们就有2个页面了:

分别是:http://localhost:8080/girl/ng/

和             http://localhost:8087/girl/ng

然后我们需要在nginx的配置文件中加:

Nginx支持热加载我们重新载入一下配置:

Nginx.exe –s reload

然后我们访问页面:

在刷新一下:

可以看到效果了:localhost/girl/ng/ 路径访问会有不同的应答,这就是nginx将我们的请求转发到不同的服务器上了。这就是nginx的负载均衡的实现。

由于每次的请求分发到了不同的服务器上,但是我们的登陆信息也就是session只保存在一台服务器上,这就会造成一个session丢失的现象,针对这样的情况,我们有3中策略去解决:

  1. 粘性session

Nginx自身提供的分发策略,即在代理转发的地址上方加:ip_hash,这样一个ip的请求只会转发到一台tomcat上(缺点:弱化了nginx的负载均衡的能力,一旦某个web服务器重启或宕机相对应的session会全部丢失。优点:实现简单,无额外开销,对应用无侵入性)

  1. 服务器session复制

在支持session复制的web服务器上,通过配置可以实现session同步到其他服务器上,达到每个web服务器上保存一致的session(优点:对应用无侵入性,web服务器重启或宕机不会造成session的丢失。缺点:占用网络资源,需要依赖支持的web服务器,会导致延迟)

具体实现方式:web应用的web.xml里加<distributable />

Web服务器的server.xml的配置文件中加:

3.  Session共享机制

利用缓存技术,集中管理所有的session,所有的web服务器从存储介质中拿session,实现session共享。(优点:可靠性高,web服务器资源开销小,服务器重启或宕机不会造成session丢失。缺点:实现复杂,配置多,增加一次网络开销。)

实现:利用redis管理session,内部实现是使用filter进行拦截到redis中进行session的查询。这里涉及到redis相关技术就不展开讲了。

下载安装

1.      下载地址:http://nginx.org/en/download.html

下载最新版nginx:

2.      解压后可直接运行

或者使用cmd命令行进行启动,

启动:start nginx

关闭:nginx.exe –s stop 或  nginx.exe –s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

热部署/重新载入Nginx:nginx.exe -s reload

服务器访问:localhost:80  à  http://localhost/

出现如下所示即成功:

配置服务

Nginx安装ok后,下面我们来使他work,代理我们的服务。

比如我们原有一个叫girl的项目:ng路径下我们打印一下请求的一些信息

这里我们可以看到我们的tomcat启动的端口是8087;

然后我们在nginx的配置文件里进行配置:

首先路径是:

打开此配置文件:其他的配置信息我们先不需要关心,我们现在先初步学习,nginx的基础配置,让他可以代理我们的tomcat应用:

首先是server也就是nginx对外提供的服务,

服务监听配置中的listen ,就是nginx的监听端口,

Location下的proxy_pass需要和上流代理配置的 girl对应,代表我们所请求的

http://girl 都会被转发到上流代理配置的 localhost:8087 路径去

在上流代理配置中,我们加一个server localhost:8087,这代表一会我们将会代理的端口,也就是请求会转发到哪里。

至此,基本配置完成,我们来试一下,

Nginx访问路径:

Tomc访问:

可以看到,我们访问nginx的80端口的访问已经转发到了8087,应为我们可以看到和访问8087一样的结果页面了。

我们使用nginx的目的是进行代理分发,是做负载均衡的,所以想展示nginx的功能我们需要多个应用,这里我们在搭建一个简单的web应用在8080端口,其页面如下:

这样我们就有2个页面了:

分别是:http://localhost:8080/girl/ng/

和             http://localhost:8087/girl/ng

然后我们需要在nginx的配置文件中加:

Nginx支持热加载我们重新载入一下配置:

Nginx.exe –s reload

然后我们访问页面:

在刷新一下:

可以看到效果了:localhost/girl/ng/ 路径访问会有不同的应答,这就是nginx将我们的请求转发到不同的服务器上了。这就是nginx的负载均衡的实现。

由于每次的请求分发到了不同的服务器上,但是我们的登陆信息也就是session只保存在一台服务器上,这就会造成一个session丢失的现象,针对这样的情况,我们有3中策略去解决:

1.      粘性session

Nginx自身提供的分发策略,即在代理转发的地址上方加:ip_hash,这样一个ip的请求只会转发到一台tomcat上(缺点:弱化了nginx的负载均衡的能力,一旦某个web服务器重启或宕机相对应的session会全部丢失。优点:实现简单,无额外开销,对应用无侵入性)

2.      服务器session复制

在支持session复制的web服务器上,通过配置可以实现session同步到其他服务器上,达到每个web服务器上保存一致的session(优点:对应用无侵入性,web服务器重启或宕机不会造成session的丢失。缺点:占用网络资源,需要依赖支持的web服务器,会导致延迟)

具体实现方式:web应用的web.xml里加<distributable />

Web服务器的server.xml的配置文件中加:

3.  Session共享机制

利用缓存技术,集中管理所有的session,所有的web服务器从存储介质中拿session,实现session共享。(优点:可靠性高,web服务器资源开销小,服务器重启或宕机不会造成session丢失。缺点:实现复杂,配置多,增加一次网络开销。)

实现:利用redis管理session,内部实现是使用filter进行拦截到redis中进行session的查询。

nginx初探,下载安装配置负载均衡的更多相关文章

  1. LVS实现负载均衡原理及安装配置 负载均衡

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  2. 在centos7下搭建nginx环境,并配置负载均衡,最终能达到通过域名直接访问的目的

    1.关于nginx:个人理解的nginx它的主要用途就是负载均衡,当然可能还有其他一些功能可能我们不长用到,我们通过nginx可以干什么呢?为什么要引入它呢?原因是当有高并发访问服务器时,服务器可能会 ...

  3. 图解nginx配置负载均衡

    1. 在Linux上准备两份tomcat 2. 修改两份tomcat的端口号 修改的端口如图所示: 3. 启动两个tomcat服务器 4. 修改两个服务器上的主页方便测试区分 5. 在nginx配置文 ...

  4. nginx安装及负载均衡配置

    Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二 ...

  5. linux 常用命令 和 nginx(反响代理、负载均衡)安装和配置

    (1)linux常用命令 [1]在光标前输入内容:i [2]删除输入方式下所输入的文本:Ctrl+u  [3]文件保存退出:wq [4]文件不保存退出:q [5]文件强制退出:q! [6]常规删除文件 ...

  6. Nginx+Tomcat多实例及负载均衡配置

    Nginx+Tomcat多实例及负载均衡配置 采用nginx的反向代理负载均衡功能,配合后端的tomcat多实例来实现tomcat WEB服务的负载均衡 01 安装nginx服务 安装所需的pcre库 ...

  7. 通过http、https域名访问静态网页、nginx配置负载均衡(nginx配置)

    很多场景下需要可以通过浏览器访问静态网页,不想把服务器ip地址直接暴露出来,通过nginx可以解决这个问题. 实现http域名访问静态网页 1.域名解析配置(本文都是以阿里云为例,其他平台,操作步骤类 ...

  8. 在ubuntu上面配置nginx实现反向代理和负载均衡

    上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托 ...

  9. 从编译安装Keepalived 到 配置 负载均衡(LVS-DR)

    最近在研究服务器高可用集群 (HA)…… Keepalived 是用C写的软路由.提供负载均衡与高可用特性. 负载均衡利用IPVS技术 高可用通过VRRP协议实现 更难能的贵的是,一直到最近还在更新 ...

随机推荐

  1. override render 方法

    有时候需要在ASP.net  或MVC 中在页面呈现前,把要显示的内容作一个拦截,更改内容后显示. 只要重写 protected override void Render(System.Web.UI. ...

  2. Spring知识点总结(一)

       1. 框架概述        所谓的框架其实就是程序的架子,在这个程序的架子中,搭建起程序的基本的骨架,针对程序的通用问题给出了便捷的解决方案,可以使开发人员 基于框架快速开发具体的应用程序.  ...

  3. SpringBoot非官方教程 | 第十篇: 用spring Restdocs创建API文档

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot10-springrestdocs/ 本文出自方志 ...

  4. C++的句柄类

    上一篇文件介绍了关于C++代理类的使用场景和实现方法,但是代理类存在一定的缺陷,就是每个代理类会创建一个新的对象,无法避免一些不必要的内存拷贝,本篇文章引入句柄类,在保持代理类多态性的同时,还可以避免 ...

  5. Layui上传文件以及数据表格

    layui对于一些前端小白来说,例如我,真的非常的好用,不用去花很多很多的心思在前端美化中,并且提高了很大的工作效率.所以建议一些觉得自己前端技术不是很强,但是想让前端美化一点的可以使用layui. ...

  6. Mybatis中多个参数的问题&&动态SQL&&查询结果与类的对应

    ### 1. 抽象方法中多个参数的问题 在使用MyBatis时,接口中的抽象方法只允许有1个参数,如果有多个参数,例如: Integer updatePassword( Integer id, Str ...

  7. 在CentOS 7上搭建Docker环境

      Preface       We commonly use VMware or VirtualBox to install our Virtual Machines before.For the ...

  8. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  9. PHP单引号和双引号的区别。

    JS写多了,到用PHP时以为不区分单引号和双引号.导致想用'\n'换行换不了,后来百度了一下,原来在PHP里单引号里面的内容会当作普通字符串不会再做任何处理.例如 $num=1; echo " ...

  10. XSS 和 CSRF简述及预防措施

    在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式.本文将会简单介绍 XSS 和 CSRF 的攻防问题. 1. xss XSS,即 Cross Site Script,中译是跨站脚本攻击 ...