一、概述

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
  4. nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

二、Nginx虚拟主机配置

  1. 基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站
  2. 基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台
  3. 基于ip的虚拟主机,几乎不用。

2.1 外网映射工具

  在做微信开发或者是对接第三方支付接口时,回调接口可能需要外网访问。这时候开发者在本地测试的时候,需要用到外网测试工具。常用的外网测试工具有natapp、ngrok

  1. 服务器更新:全面支持HTTPS协议以及本地SSL证书,支持WSS协议.同时支持HTTP/2 WEB协议,支持微信小程序本地开发
  2. 全面自动支持泛子域名与访客真实IP地址
  3. Windows用法 natapp -authtoken=9ab6b9040a624f40
  4. 相关文档https://natapp.cn/

2.2 基于虚拟主机配置域名

实现步骤:

  1. 需要建立/data/www /data/bbs目录,
  2. windows本地hosts添加虚拟机ip地址对应的域名解析;
  3. 对应域名网站目录下新增index.html文件;

当客户端访问bbs.hao.com,监听端口号为80,直接跳转到data/www目录下文件

server {
listen 80;
server_name www.hao.com;
location / {
root data/www;
index index.html index.htm;
}
}

当客户端访问bbs.hao.com,监听端口号为80,直接跳转到data/bbs目录下文件

server {
listen 80;
server_name bbs.hao.com;
location / {
root data/bbs;
index index.html index.htm;
}
}

2.3 基于端口的虚拟主机

使用端口来区分,浏览器使用域名 或ip地址:端口号 访问:

当客户端访问www.hao.com,监听端口号为8080,直接跳转到data/www目录下文件

server {
listen 8080;
server_name 8080.hao.com;
location / {
root data/www;
index index.html index.htm;
}
}

当客户端访问www.hao.com,监听端口号为8081,直接跳转到data/bbs目录下文件

server {
listen 8081;
server_name www.hao.com;
location / {
root data/bbs;
index index.html index.htm;
}
}

三、Nginx配置反向代理

3.1 反向代理的作用

  1. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
  2. 启动一个Tomcat 127.0.0.1:8080
  3. 使用nginx反向代理 www.hao.com 直接跳转到127.0.0.1:8080

3.2 反向代理的好处

反向代理的好处隐藏真实内部ip地址,请求先访问nginx代理服务器(外网可以访问到),在使用nginx服务器转发到真实服务器中。

3.3 反向代理的配置

  当客户端访问www.hao.com,监听端口号为80 ,直接跳转到真实ip服务器地址127.0.0.1:8080

server {
listen 80;
server_name www.hao.com;
location / {
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
}

当客户端访问www.hao.com,监听端口号为80直接跳转到真实ip服务器地址 127.0.0.1:8081


server {
listen 80;
server_name bbs.hao.com;
location / {
proxy_pass http://127.0.0.1:8081;
index index.html index.htm;
}
}

四、负载均衡

4.1 负载均衡简介以及作用

  1. 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
  2. 负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
  3. 负载均衡就是,将所有请求先到负载均衡器,在由负载均衡器采用负载均衡算法(轮训、IP绑定、权重)分发到不同实际的服务器中,这也就是服务器集群,集群的目的 是为了减轻单台服务器压力

4.2 负载均衡的缺点

  使用负载均衡后,实际用到的服务器会被集群多台,那么这时候就会产生很多分布式相关问题。比如:

  1. 分布式Session一致性问题
  2. 分布式定时任务调度幂等性问题(发送多次请求)
  3. 分布式生成全局订单ID
  4. 分布式锁解决方案
  5. 分布式配置中心
  6. 分布式日志收集系统

4.3 四层和七层负载均衡的区别

  1. 四层负载均衡,在网络模型中的传输层中,基于主要是基于TCP协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。在Nginx1.9之后支持四层负载均衡
  2. 七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。

4.4 Upstream Server 负载均衡

  1. Upstream Server 中文翻译 上游服务器,意思就是负载均衡服务器设置,白话文表示(就是被nginx代理最后真实访问的服务器)
  2. 负载均衡算法:配置多个上游服务器(真实业务逻辑访问的服务器)的负载均衡机制
    Nginx负载均衡 内置功能:故障转移:
  3. 失败重试机制:当上游服务器(真实业务逻辑访问的服务器)出现超时或者服务器不存活,是否考虑重试机制(补偿机制)
  4. 服务器心跳检测: 当上游服务器(真实业务逻辑访问的服务器),监控检测|心跳检测

4.4 Nginx配置负载均衡

  1. Nginx负载均衡提供上游服务器(真实业务逻辑访问的服务器),负载均衡、故障转移、失败重试、容错、健康检查等。
  2. 当上游服务器(真实业务逻辑访问的服务器)发生故障时,可以转移到其他上游服务器(真实业务逻辑访问的服务器)。

4.5 Upstream Server配置

upstream 主要配置如下:

#IP地址和端口号:配置上游服务器的IP地址和端口
#定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮训机制
upstream backServer{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name www.hao.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer; # 此处的名字和前面定义的上游服务器名字相同backServer
index index.html index.htm;
}
}

4.6 负载均衡算法

  1. 轮询(默认)

    • 每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
  2. weight(轮询权值)
    • weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
  3. ip_hash
    • 每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。俗称IP绑定。
  4. fair(第三方)
    • 比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。
  5. url_hash(第三方)
    • 按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

Nginx 自身带的下面三种方式配置

  1. 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
    配置见上面
  2. 权重Weight

    upstream  backServer{
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=2;
    }
    server {
    listen 80;
    server_name www.hao.com;
    location / {
    ### 指定上游服务器负载均衡服务器
    proxy_pass http://backServer;
    index index.html index.htm;
    }
    }
  3. IP绑定:ip_hash:每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。俗称IP绑定。

     upstream  backServer{
    server 127.0.0.1:8080 ;
    server 127.0.0.1:8081 ;
    ip_hash;
    }
    server {
    listen 80;
    server_name www.hao.com;
    location / {
    ### 指定上游服务器负载均衡服务器
    proxy_pass http://backServer;
    index index.html index.htm;
    }
    }

4.7 Nginx配置故障转移

当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用。Nginx配置代码:

upstream  backServer{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name www.hao.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer;
###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 1s;
###nginx发送给上游服务器(真实访问的服务器)超时时间
proxy_send_timeout 1s;
### nginx接受上游服务器(真实访问的服务器)超时时间
proxy_read_timeout 1s;
index index.html index.htm;
}
}

【Nginx】应用场景的更多相关文章

  1. Nginx应用场景

    1. Nginx应用场景 1)http服务器.Nginx可以独立的提供http服务,可以做网页静态服务器(也就是将静态文件放到nginx目录下,通过nginx来访问就ok)   2)虚拟主机,可以在一 ...

  2. nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解

    1.nginx介绍 1丶俄罗斯人开发的,开源www服务软件 2丶软件一共780K 3丶nginx本身是一款静态(html,js,css,jpg等)www软件 4丶静态小文件高并发,同时占用的资源很少, ...

  3. 针对nginx应用场景的配置 知识整理

    本文为转载,原文链接 前言 原本想写整理一篇针对nginx应用场景的相应配置,但发现已经有人整理了,而且写得非常不错,特意转过来 概论 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 ...

  4. Nginx应用场景配置

    Nginx应用全入门 基础回顾 Nginx是什么? Nginx是一个高性能的HTTP和反向代理web服务器,特点是内存少,并发能力强 Nginx能做什么 Http服务器(Web服务器) 反向代理服务器 ...

  5. nginx常用场景

    1.浏览器缓存 server { listen 8083; server_name 127.0.0.1; sendfile on; access_log /var/log/nginx/static_s ...

  6. nginx使用场景

    1. 对外开放本地封闭Server 本地server无法对外开放,nginx做反向代理,对外开发,使得外部可以访问封闭服务. upstream npm { server ; keepalive ; } ...

  7. Nginx和Tengine的详细安装图文教程(Linux下)

    简洁安装 安装依赖 yum -y install gcc openssl-devel pcre-devel zlib-devel 编译三步走./configure \ --prefix=/opt/sx ...

  8. Nginx和Tengine解决高并发和高可用,而非推荐Apache

    什么是Nginx  什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...

  9. nginx(一)初识nginx

    什么是nginx?Nginx (engine x) 是一款轻量级的Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. Nginx应用场景(都很常用): 1:http服务器.N ...

  10. 详解Nginx服务器配置

    #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes ; #全局错误日志及PID文件 #error_log logs/error.log; ...

随机推荐

  1. Linux基础管道管理

    一.I/O重定向 标准输入,标准输出,标准错误 file descriptors (FD, 文件描述符或Process I/O channels); 进程使用文件描述符来管理打开的文件 [root@l ...

  2. Activiti6系列(5)- 核心API

    前言 本来想把<疯狂工作流讲义-activiti6.0>这本书里面的实例拿过来,但是这本书我看完后,认为里面编写的activiti6的核心API代码片段不是很清晰,有不少需要雕琢的地方才好 ...

  3. 0x03 前缀和与差分

    前缀和 [例题]BZOJ1218 激光炸弹 计算二位前缀和,再利用容斥原理计算出答案即可. #include <iostream> #include <cstdio> #inc ...

  4. 为什么建立数据仓库需要使用ETL工具?

    在做项目时是不是时常让客户有这样的困扰: 1.开发时间太长 2.花费太多 3.需要太多资源 4.集成多个事务系统数据总是需要大量人力成本 5.找不到合适的技能和经验的人 6.一旦建立,数据仓库无法足够 ...

  5. 直击--vue项目微信小程序页面跳转web-view不刷新-根源

    背景 最近项目需要适配小程序,项目是使用了vue开发的网站,其中改造方式是,每个页面都使用小程序创建一个页面通过web-view来显示指定页面的. 在没有使用小程序时,路由跳转时,刷新页面等等,这个是 ...

  6. 『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)

    0. 前言介绍 开源地址:https://github.com/matterport/Mask_RCNN 个人主页:http://www.yansongsong.cn/ MaskRCNN是何凯明基于以 ...

  7. BFS-迷宫问题

    问题描述 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  8. Netbeans courier new 乱码问题

    Netbeans 默认的字体 monospaced,显示英文的单引号及字体非常的不好看,在网上查了下资料可以变得很好看. 1.仍然保持默认字体 monospaced 2.在Netbeans 的安装目  ...

  9. JVM(十一):内存分配

    JVM(十一):内存分配 在前面的章节中,我们花了大量的篇幅去介绍 JVM 内的内存布局.对象在内存中的状态.垃圾回收的算法和具体实现等.今天让我们探讨一下对象是如何分配内存的. 堆内存划分 前面说过 ...

  10. 蔡勒(Zeller)公式及其推导:快速将任意日期转换为星期数

    0. 本文的初衷及蔡勒公式的用处 前一段时间,我在准备北邮计算机考研复试的时候,做了几道与日期计算相关的题目,在这个过程中我接触到了蔡勒公式.先简单的介绍一下蔡勒公式是干什么用的. 我们有时候会遇到这 ...