1,简介

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
Nginx一般用户七层负载均衡,其吞吐量有一定的限制。为了提高整体的吞吐量,会在DNS和Nginx之间引入LVS(软件负载均衡器)、F5(硬负载均衡器) 可以做四层负载均衡,首先DNS解析到LVS(F5),让后LVS(F5)转发给Nginx,在有Nginx转发给真实的服务器

2,安装(windows)

解压之后,双击nginx.exe,看到一闪而过,浏览器输入127.0.0.1,出现以下界面代表安装成功

linux 安装:https://www.cnblogs.com/pickKnow/p/11224225.html

3,Ngnix 相关命令

验证配置是否正确: nginx -t

查看Nginx的版本号:nginx -V

启动Nginx:start nginx

快速停止或关闭Nginx:nginx -s stop

正常停止或关闭Nginx:nginx -s quit

配置文件修改重装载命令:nginx -s reload

4,Nginx应用场景

1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

2、虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

4、Nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

静态资源:Ngnix 目录下的tml 目录存放了静态资源

虚拟主机配置:

1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站

2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台

3、基于ip的虚拟主机

基于域名的虚拟主机:本地模拟

step1:C:\Windows\System32\drivers\etc 下的host 文件,添加已下:

127.0.0.1 www.baiyue.com
        127.0.0.1 bbs.baiyue.com

step2:修改nginx-1.15.0\conf 文件夹下的nginx.conf 文件:

意味着:当客户端访问Nginx的时候,拦截所有的www.baiyue.com 的域名,监听的端口号为80,最终查找路径式views/baiyue/index.html

    # 添加到虚拟主机www.baiyue.com
server {
listen 80;
server_name www.baiyue.com; location / {
root views/baiyue;
index index.html;
}
} # 添加到虚拟主机bbs.baiyue.com
server {
listen 80;
server_name bbs.baiyue.com; location / {
root views/bbs;
index index.html;
}
}

访问:www.baiyue.com   和 bbs.baiyue.com

基于端口的虚拟主机:

step1:C:\Windows\System32\drivers\etc 下的host 文件,添加已下:

127.0.0.1 8080.baiyue.com
     127.0.0.1 8081.baiyue.com

step2:修改nginx-1.15.0\conf 文件夹下的nginx.conf 文件:

    server {
listen 8080;
server_name 8080.baiyue.com; location / {
root views/baiyue;
index index.html;
}
} # 添加到虚拟主机www.tencent.com
server {
listen 8081;
server_name 8081.baiyue.com; location / {
root views/bbs;
index index.html;
}
}

访问:www.baiyue.com:8080   和 www.baiyue.com:8081

反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
简单的说就是,Ngnix 作为反向代理服务器,接收来自客户端的请求,分发给内部服务器,接收到结果之后,再返回给客户端。

模拟:启动本地springboot 项目:

启动完成之后:可以访问http://127.0.0.1:8080/index,页面出现自己设计的返回页面

配置本地host:,将之前的注释掉,以免影响测试

127.0.0.1 www.baiyue.com
#127.0.0.1 bbs.baiyue.com
#127.0.0.1 8080.baiyue.com
#127.0.0.1 8081.baiyue.com

配置nginx.conf 反向代理:主要的配置proxy_pass 当监听到域名式www.baiyue.com 端口8080 时,分发到内部的实际服务器地址127.0.0.1:8080,就能返回到本地项目访问的页面了

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

location的语法
已=开头表示精确匹配
如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。

^~ 开头表示uri以某个常规字符串开头,不是正则匹配

~ 开头表示区分大小写的正则匹配;

~* 开头表示不区分大小写的正则匹配

/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到

负载均衡:

load Balance,是指在高并发情况下,可以使用Nginx 实现分流,将请求分发到不同的服务器,减小单个服务器的压力。

在Nginx 配置负载均衡就是要配置Upstream server(上游服务器,就是Ngnix最后真实访问的服务器),因为会配置集群,所以所多台upstream server

配置多台upstrem server 的好处,或者说Nginx 负载均衡的好处:

1,实现分流,减少单个服务器压力,在高并发,大流量的情况下的高访问业务

2,集群之后,Nginx 实现故障转移,不让服务宕机,http 请求,若一台服务器发生故障,可以直接转移到下一台服务器,以便请求继续

模拟负载均衡,本地开启俩两个服务,端口为8080,8082,配置Nginx 负载均衡,让其分发到不到的服务上:

C:\Windows\System32\drivers\etc 下的host 文件 ,继续配置:127.0.0.1 www.baiyue.com

配置nginx.conf 负载均衡,主要式配置上游服务器,和proxy_pass

    # 配置上游服务器
upstream backServer{
server 127.0.0.1:8080;
server 127.0.0.1:8082;
} server {
listen 80;
server_name www.baiyue.com; location / {
proxy_pass http://backServer;
index index.html index.htm;
}
}

这时候,访问http://www.baiyue.com/index 地址的时候,Nginx 会采用轮询 机制,轮流分发到不同的额服务器上,所以点击一次,显示的是8080 服务上的内容,再点击,显示的是8082 服务的内容

Nginx 负载均衡包含的算法:

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
2、weight(轮询权值)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

权重越高,分发到这台服务器的机会(次数)就越高

  # 配置上游服务器
upstream backServer{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8082 weight=2;
} server {
listen 80;
server_name www.baiyue.com; location / {
proxy_pass http://backServer;
index index.html index.htm;
}
}

设置之后,当Nginx 接收到请求之后,分配给8082 所在的服务器要多一点

3、ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。俗称IP绑定。

访问的客户端和上游服务器进行绑定,以后每次这个客户端发起的请求,都交给这台服务器来处理

    # 配置上游服务器
upstream backServer{
server 127.0.0.1:8080;
server 127.0.0.1:8082;
ip_hash;
} server {
listen 80;
server_name www.baiyue.com; location / {
proxy_pass http://backServer;
index index.html index.htm;
}
}

配置ip_hash; 之后,本地测试每次访问都是访问同一个服务,因为已经进行了ip绑定

4、fair(第三方)
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

5、url_hash(第三方)
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

5 配置Nginx 故障转移

模拟,当本地两台服务有一台挂了之后,会根据你设置的等待时候,在几秒之后分发给下一台服务器,如果不设置时间,他会一直等待

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

Nginx 简介与安装的更多相关文章

  1. Nginx简介与安装

    | 简介 Nginx是一个高性能的HTTP和反向代理服务器,可以作为负载均衡服务器,也是一个IMAP/POP3/SMTP服务器.它的特点是占有内存少,并发能力强.目前有很多大型公司都在使用Nginx, ...

  2. Nginx 简介与安装、常用的命令和配置文件

    1.nginx 简介(1)介绍 nginx 的应用场景和具体可以做什么事情 (2)介绍什么是反向代理 (3)介绍什么是负载均衡 (4)介绍什么是动静分离 2.nginx 安装(1)介绍 nginx 在 ...

  3. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  4. Nginx 笔记(一)nginx简介与安装

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) Nginx 简介: 1.介绍 nginx 的应用场景和具体可以做什么事情 2.介绍什么是反向代理 3.介 ...

  5. Java高级架构师(一)第31节:Nginx简介、安装和基本运行

    第一节:主要介绍Nginx和安装

  6. nginx一:安装和基本应用

    Nginx: 目录 Nginx:... 1 NGINX简介和安装... 1 网站... 1 全称... 2 二次开发版... 2 Nginx的特性... 2 基本功能... 2 web服务相关的功能. ...

  7. nginx高性能WEB服务器系列之一简介及安装

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  8. Nginx高性能服务器安装、配置、运维 (1) —— Nginx简介

    一.Nginx 简介 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器. Nginx特点 ...

  9. Nginx Windows详细安装部署教程

    一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramble ...

随机推荐

  1. 不要忽视Managed code stripping的副作用

    0x00 前言 Unity 2018.3之后,新的“Managed Stripping Level”选项将替换 player settings 中原有的“Stripping Level”选项. 这个新 ...

  2. 使用QT绘制一个多边形

    目录 1. 概述 2. 实现 2.1. 代码 2.2. 解析 3. 结果 1. 概述 可以通过QT的重绘事件和鼠标事件来绘制多边形,最简单的办法就是在继承QWidget的窗体中重写paintEvent ...

  3. [CSS]CSS Position 详解

    一. CSS position 属性介绍 CSS中position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型.有static,relative,absolute和fixed四种取值 ...

  4. 【django】 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求

    如果是后台上传文件: setting配置: STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ...

  5. excel排序技术记录

    问题: 给了我一个excel,要求以奖项和编码同时进行排序(奖项优先),但是单元格大小不一样,有数列都是合并了单元格的,同时编码的格式还不一样,有些是SMM-2-07,有些是2-07,所以根本无法进行 ...

  6. 使用ZXingObjC扫描二维码横竖屏对应

    /** 根据屏幕的方向设置扫描的方向 * @author maguang * @param parameter * @return result */ - (void)showaCapture { C ...

  7. Matplotlib数据可视化(6):饼图与箱线图

    In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...

  8. 使用pyecharts绘制词云图-淘宝商品评论展示

    一.什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字.色彩.图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息. 制作词云图的网站有很多,简单方便,适合小批量操作. BI ...

  9. Python基础篇(五)_文件和数据格式化

    Python基础篇_文件和数据格式化 文件的使用:文件打开.关闭.读写 文件打开:通过open()函数打开文件,并返回一个操作文件的变量. 使用语法:<变量名> = (<文件路径以及 ...

  10. hive实践_01

    本地一份包含有中文的文本文件在上传到hive前,需要先转化为UTF-8格式,否则会出现乱码.(notepad++ 格式>>>转化UTF-8编码格式)   -------------- ...