本章节将要讲解的是Nginx的使用,我们主要从以下四个方面进行讲解。

1.1 配置文件结构

nginx的配置文件(conf/nginx.conf)整体上分为三部分: 全局块、events块、http块。这三块的分别配置什么样的信息呢,看下表:

具体结构图如下:

在全局块、events块以及http块中,我们经常配置的是http块。

在http块中可以包含多个server块,每个server块可以配置多个location块。

1.2 部署静态资源

1.2.1 介绍

Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。

相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。

将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

server {
    listen 80;                #监听端口    
    server_name localhost;    #服务器名称
    location / {            #匹配客户端请求url
        root html;            #指定静态资源根目录
        index index.html;    #指定默认首页
    }
}

1.2.2 测试

在资料中,我们提供了一个静态的html文件,我们需要将这个文件部署到nginx中,然后通过nginx访问html静态资源。

1). 将静态资源上传到 /usr/local/nginx/html 目录

2). 启动nginx

3). 访问 http://192.168.200.200/hello.html  http://192.168.200.200 , 访问该地址,访问的是nginx的默认首页

4). 配置首页

如果我们需要将hello.html作为nginx的首页,可以修改location的index指令,配置为hello.html,如下:  配置完毕后,我们可以通过指令,来检查配置文件是否配置正确: nginx -t

配置文件修改了,我们需要重新加载一下,才可以生效:

nginx -s reload

5). 访问 http://192.168.200.200 ​​​​​​​

1.3 反向代理

1.3.1 概念介绍

1). 正向代理

正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。

正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

2). 反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定,对于用户来说,访问反向代理服务器是完全无感知的。

那么在本小节,我们就是要使用nginx来作为反向代理服务器使用。 在nginx中,我们可以在nginx.conf中配置反向代理:

server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.200.201:8080;     #反向代理配置,将请求转发到指定服务
    }
}

上述配置的含义为: 当我们访问nginx的82端口时,根据反向代理配置,会将请求转发到 http://192.168.200.201:8080 对应的服务上。

1.3.2 测试

需求: 在192.168.200.201这台服务器中部署了java应用,运行端口为8080,并提供了一个可访问的链接 /hello。现在我们需要在访问nginx的82端口时,通过nginx将请求转发到192.168.200.201:8080的服务。

1). 在192.168.200.201部署服务并启动

将资料中提供的 helloworld-1.0-SNAPSHOT.jar 上传到服务器端,并通过指令 java -jar helloworld-1.0-SNAPSHOT.jar 运行服务。

2). 在192.168.200.200中的nginx.conf中配置反向代理

进入nginx的安装目录,并编辑配置文件nginx.conf:

cd /usr/local/nginx/conf/
vim nginx.conf

在http块中,再添加一个server块虚拟主机的配置,监听82端口,并配置反向代理proxy_pass:

server {
    listen 82;
    server_name localhost;
    location / {
        proxy_pass http://192.168.200.201:8080;     #反向代理配置,将请求转发到指定服务
    }
}

3). 检查配置文件,并重新加载

nginx -t

nginx -s reload

4). 访问

注意: 在访问82端口时,有可能访问不通,原因是以为防火墙中没有开放端口号。我们可以通过两种方式来解决该问题:

A. 关闭防火墙

systemctl stop firewalld

B. 开发指定端口

firewall-cmd --zone=public --add-port=82/tcp --permanent

firewall-cmd --reload

1.4 负载均衡

1.4.1 概念介绍

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。

应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据

负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

此处的负载均衡器,我们将会使用Nginx来实现,而Nginx的负载均衡是基于反向代理的,只不过此时所代理的服务器不是一台,而是多台。

1.4.2 测试

1). 将资料中提供的两个jar包,上传到192.168.200.201服务器上 ​​​​​​​

我们在测试时,并没有那么多服务器,我们可以在一台服务器中启动多个服务,运行在不同的端口号上进行测试。

2). 运行上传上来的两个jar包,运行端口分别是 8080 , 8081

由于我们执行 java -jar 指令会占用前台窗口,所以我们可以开启两个窗口进行测试。

3). 在nginx中配置负载均衡

打开nginx的配置文件nginx.conf并增加如下配置:

#upstream指令可以定义一组服务器
upstream targetserver{    
    server 192.168.200.201:8080;
    server 192.168.200.201:8081;
}

server {
    listen       8080;
    server_name  localhost;
    location / {
        proxy_pass http://targetserver;
    }
}

具体的配置位置如下:

4). 重新加载nginx配置文件,访问

nginx -s reload

测试时,我们直接访问nginx的8080端口(http://192.168.200.200:8080), 此时nginx会根据负载均衡策略,将请求转发到后面的两台服务器。

在上述的测试过程中,我们看到请求均衡的转发到了8080和8081,因为模式的负载均衡策略是轮询。

注意: 上述所有涉及到的端口号,都需要在对应的服务器的防火墙中开放,或者彻底关闭防火墙  

1.4.3 负载均衡策略

处理上述默认的轮询策略以外,在Nginx中还提供了其他的负载均衡策略,如下:

​​​​​​​

权重的配置:

#upstream指令可以定义一组服务器
upstream targetserver{    
    server 192.168.200.201:8080 weight=10;
    server 192.168.200.201:8081 weight=5;
}

上述配置的weight权重是相对的,在上述的配置中,效果就是,在大数据量的请求下,最终8080接收的请求数是8081的两倍。

Nginx-应用:静态资源部署、反向代理以及负载均衡相关推荐

  1. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  2. Nginx 概述 如何正规安装 静态网页配置 反向代理配置 负载均衡配置

    目录 1. 基本概念 1.1 Nginx初步认识 1.2 正向/反向代理 1.3 域名和IP 2. Nginx安装和配置 2.1 安装Nginx 2.2 配置 3. Nginx的使用 3.1 部署静态 ...

  3. nginx配置域名转发、反向代理、负载均衡

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  4. Nginx整合tomcat,实现反向代理和负载均衡

    1.Nginx与Tomcat整合,通过Nginx反向代理Tomcat. Nginx安装路径为:/usr/local//nginx 首先切换路径到:/usr/local//nginx/conf通过命令  ...

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

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

  6. nginx反向代理相关 负载均衡及优化

    一.反向代理 1.1.upstream简介 nginx的upstream可以同时实现反向代理和负载均衡,目前upstream支持5种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端 ...

  7. nginx一篇入门:安装、静态网站部署、反向代理、负载均衡

    前言: 本文章的nginx和tomcat是在Linux中,使用docker来安装和讲解 本人刚学完nginx,如有不对地方,欢迎指正 目录 ⼀.Nginx的安装与启动 1.什么是Nginx Nginx ...

  8. [转]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

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

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

  10. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

最新文章

  1. Java中New一个对象是个怎么样的过程?
  2. ExtJS4.1.1 设置表格背景颜色 修改文本颜色 在表格中插入图片
  3. 菜鸟学前端之遍寻名师之混乱的笔记
  4. 汇编语言标识符及其命名规则
  5. Linux 学习笔记之超详细基础linux命令 Part 3
  6. leetcode 526. Beautiful Arrangement | 526. 优美的排列(回溯)
  7. dbgrideh的功能
  8. 错误删除linux分区致Win7引导失败的修复方法
  9. DHCP|什么是DHCP|DHCP介绍
  10. jmeter 插件 监视器 图形界面使用
  11. Android平台下的ToDoList
  12. 深山红叶(袖珍PE系统工具箱)
  13. 【工业大数据】35页PPT讲解:工业大数据特点、价值及其计算
  14. 哔哩哔哩H.265编码器在直播和点播的实践和应用
  15. 单片机c语言msb全称,51单片机英文缩写全称(整理最全)
  16. 【JAVA SE基础篇】29.初识数组
  17. 国际商务谈判 简答题
  18. 三重积分的概念,计算(先一后二(投影穿线法))
  19. 3D建模师的工作环境到底是怎么样的?10年建模师:没有艺术天分,建模是我最好的选择
  20. 关于主从延迟,一篇文章给你讲明白了!(转)

热门文章

  1. 计算机类高级职称考哪个职称英语,计算机专业考职称英语3个类别
  2. java计算机毕业设计河东街摊位管理系统MyBatis+系统+LW文档+源码+调试部署
  3. Gh0st通信协议解析(3) .send数据包大概是域名拦截关键
  4. Android样式之view animation
  5. 2017.11.25 计算机一级,2017计算机一级MSOffice考试试题
  6. sql update 不更新
  7. 采用用计算机及条形码技术的是什么,条形码技术及其应用
  8. 泡面吧——简单的斐波那契序列
  9. Jekyll搭建个人博客 韩俊强的博客
  10. iPhone手机录音小技能:教你如何设置轻点两下背部录音