一、概述

  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. WPF界面的异步后台加载

    private void Init()         {                     BackgroundWorker worker = new BackgroundWorker(); ...

  2. Okhttp3 网络请求框架与 Gson

    Maven环境 : <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>o ...

  3. webupload项目中使用

    目前项目需要一个多图上传的功能,使用LayUI并也是可以实现多图上传的,但是没有图片删除功能,参考了一下网上多图上传的插件,选择了WebUpload进行功能开发. 然而不幸的是,官方的插件并不带UI界 ...

  4. 跟着大彬读源码 - Redis 10 - 对象编码之整数集合

    [TOC] 整数集合是 Redis 集合键的底层实现之一.当一个集合只包含整数值元素,并且元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现. 1 整数集合的实现 整数集合是 Redis ...

  5. 【POJ - 3259】Wormholes(最短路 Floyd算法)

    Wormholes 题目描述 教学楼里有很多教室,这些教室由双向走廊连接.另外,还存在一些单向的秘密通道,通过它们可以回到过去.现在有 N (1 ≤ N ≤ 500) 个教室,编号 1..N, M ( ...

  6. dart的基本语法(一)

    Hello world ​ 安装dart的环境就不赘述了,无脑安装就可以了,安装过程中好像需要梯子(vpn),我装的时候失败好多次,我的梯子不能用了,准备不装了的时候,莫名其妙的装好了.迷の操作.惯例 ...

  7. 【POJ - 3255】Roadblocks(次短路 Dijkstra算法)

    Roadblocks 直接翻译了 Descriptions Bessie搬到了一个新的农场,有时候他会回去看他的老朋友.但是他不想很快的回去,他喜欢欣赏沿途的风景,所以他会选择次短路,因为她知道一定有 ...

  8. 使用 php 内部web服务器

    使用 php 内部web服务器如网站目录 d:\web\index.php1.打开命令窗口,输入下列3条命令cd d:cd d:\web\index.phpphp -S localhost:80802 ...

  9. 后端开发实践系列之三——事件驱动架构(EDA)编码实践

    在本系列的前两篇文章中,笔者分别讲到了后端项目的代码模板和DDD编码实践,在本文中,我将继续以编码实践的方式分享如何落地事件驱动架构. 单纯地讲事件驱动架构(Event Driven Architec ...

  10. Spring源码剖析6:Spring AOP概述

    原文出处: 五月的仓颉 我们为什么要使用 AOP 前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础.这篇文章最后的推荐以及回复认为我写的对大 ...