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. Enbale IE mode in Edge

    1. 打开Edge, 在地址栏输入 edge://flags/ 2. 搜索 Enable IE Integration , 配置为 IE mode 3. 找到Edge的启动程序路径.如 C:\Prog ...

  2. [红日安全]Web安全Day8 - XXE实战攻防

    本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...

  3. 关于HTTP那些事

    写这篇文章的原因 记录前端性能优化用到的关键概念 简化大家对HTTP的学习 大家或许面试的时候可以用得到哦 HTTP是什么 Web的应用层协议(超文本传输协议HyperText Transfer Pr ...

  4. 沪江iKcamp出品微信小程序教学共5章16小节汇总(含视频)

  5. 前端每日实战:146# 视频演示如何用纯 CSS 创作一个脉动 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/wYvGwr 可交互视频 此视频是可 ...

  6. 等宽字体的妙用-loading 点点点动画

    原理 ch等宽字体 + text-indent 动画负缩进 显示效果如 loading . loading .. loading ... loading . loading .. loading .. ...

  7. Polly每次重试执行不同的操作

    Polly每次重试执行不同的操作 前言   最近在写WG(用的 .net core 3.1 + wpf + abp vnext),程序里大量用到了重试机制选用的是Polly组件(只知道这个...). ...

  8. .NET实现一个简单的IOC容器

    目录 1.主要细节 2.具体示例 参考及示例代码下载 shanzm-2020年3月17日 20:06:01 1.主要细节 使用反射程序集的方式获取对象的类型 通过反射的方式获取指定类型的的所有公共属性 ...

  9. touch.js——手机端的操作手势

    TOUCH.JS手势操作,例如一指拖动.两指旋 基本事件: touchstart   //手指刚接触屏幕时触发 touchmove    //手指在屏幕上移动时触发 touchend     //手指 ...

  10. Ubuntu 18 安装 cuda 10

    1.把预先下好的cuda放到某个目录,如Download. 2.Crtl + Alt + F3 进入tty,使用tty登录. 关闭用户图形界面,sudo systemctl set-default m ...