Nginx 简介和使用

  • Nginx简介
    • Nginx发展介绍
    • Nginx作者
    • 正向代理和反向代理概念
    • 网站代理服务器查看
  • Nginx环境搭建
    • 下载
    • 安装前准备
    • 安装
    • 启动
    • 检测Nginx是否启动
    • 关闭
    • 重启
  • Nginx核心配置文件说明
  • Nginx主要功能
    • 1、静态网站部署
    • 2、负载均衡
        • 负载均衡概述
        • 负载均衡实现方式
        • Nginx负载均衡策略
        • 负载均衡其他配置
    • 3、静态代理
        • 静态代理实现方式
    • 4、动静分离
    • 5、虚拟主机
        • 配置虚拟主机方式

Nginx简介

Nginx发展介绍

Nginx 是一个高性能的(静态)Web服务器反向代理服务器,也可以作为邮件代理服务器。
Nginx特点是占用内存少,并发处理能力强,以高性能、第系统资源消耗而闻名,Nginx官方测试为5万并发请求。与Nginx同类型的Web服务器还有Apache Lighttpd、Tengine(阿里巴巴的)等。国内互联网中大量使用了Nginx,比如新浪、网易、美团、搜狐等。
Nginx是免费开源的,同时Nginx也有收费的商业版本,商业版本提供了性能优化、宕机等紧急问题处理等技术支持和服务。

传统方式:
在这里插入图片描述
问题:tomcat连接数量有上限,超过之后其他人访问就要排队了,用户体验下降
改进:建立tomcat集群,采用Nginx进行反向代理。
在这里插入图片描述

Nginx作者

伊戈尔·赛索耶夫,俄罗斯,c语言开发的

正向代理和反向代理概念

反向代理(Reverse Proxy) 方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;
正向代理 类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某个网站,但是我能访问一个代理服务器,这个代理服务器,它能帮我访问我访问不了的网站,于是我先连上代理服务器,告诉他我需要访问的网站,代理服务器去取回来,返回给我。
总结:正向代理代理对象是客户端,反向代理代理对象是服务端

网站代理服务器查看

  • 淘宝:tengine
    在这里插入图片描述在这里插入图片描述
  • 网易:nginx
    在这里插入图片描述

Nginx环境搭建

下载

免费开源网站:http://nginx.org
下载Linux版本的nginx-1.14.2.tar.gz
方式一:直接在Linux输入命令 wget http://nginx.org/download/nginx-1.14.2.tar.gz
方式二:先下载下来,再上传到linx服务器的/home/soft/目录下

安装前准备

Nginx的安装需要确定Linux安装相关的几个库,否则配置和变异会出现错误;
执行下面命令:(如果存在则跳过,不存在就下载)

yun install gcc openssl-devel pcre pcre-devel zlib zlib-devel -y

安装

  1. 解压下载下来的nginx文件
tar -zxvf nginx-1.14.2.tar.gz
  1. 切换至解压后的nginx主目录
cd nginx-1.14.2
  1. 安装到指定安装路径下
./configure --prefix=/user/local/nginx
  1. 编译
make
  1. 安装
make install

安装成功后,可以切换到/user/local/nginx目录下,查看nginx内容:

  • conf/nginx.conf :主配置文件
  • html/50x.html:错误页面
  • html/index.html:欢迎首页面
  • logs/:日志文件存放目录
  • sbin/nginx:启动命令

上述过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

启动

  1. 普通启动
    切换到nginx安装目录的sbin目录下,执行 ./nginx

  2. 配置文件启动
    sbin目录下执行./nginx -c /user/local/nginx/conf/nginx.conf -t
    或者直接执行/user/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf -t
    其中 -c 指定配置文件,且配置文件路径必须是绝对路径
    其中 -t 是检查配置文件,可以知道配置文件是否正确

检测Nginx是否启动

  1. 查看进程:ps -ef | grep nginx
    在这里插入图片描述
    nginx体系结构由 master 进程和其 worker 进程组成
    master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理
  2. 在浏览器输入 http://服务器![在这里插入图片描述](https://img-blog.csdnimg.cn/20210128175150122.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzkxMzA0Mg==,size_16,color_FFFFFF,t_70) ip地址:80 访问Nginx服务器,出现界面(关闭防火墙)
    在这里插入图片描述

关闭

  1. 优雅关闭
    找出nginx进程号:ps -ef | grep nginx
    杀死master进程:kill -QUIT master-pid

  2. 快速关闭
    找出nginx进程号:ps -ef | grep nginx
    杀死master进程:kill -TERM master-pid

优雅关闭:命令执行后,nginx服务器不再接收请求,但要把之前的请求处理完毕之后再关闭,可能需要一段时间。
快速关闭:命令执行后,nginx服务器不管请求是否处理完成,直接关闭,比较暴力,快速快。
使用kill -9 pid 只能杀死一个pid进程,比如杀死master进程,但worker进程还在,所以就不要用 -9 了。

重启

执行命令 nginx -s reload,包含关闭和启动两个操作。

Nginx核心配置文件说明

Nginx核心配置文件在Nginx安装目录/user/local/nginx/conf目录下,名为nginx.conf。

Nginx核心配置文件主要由三部构成:

  1. 基础配置
    在这里插入图片描述
  2. events配置
    worker_connections最大65535
    nginx并发量=worker_processes x worker_connections
    在这里插入图片描述
  3. http配置
    在这里插入图片描述
    一个http里面可能有多个server,保证多个server的端口号和服务名不完全一样即可:
    在这里插入图片描述

Nginx主要功能

1、静态网站部署

Nginx 是一个 HTTP 的 Web 服务器,可以将服务器上的静态文件(如HTML、图片等)通过 HTTP 协议返回给浏览器客户端。

  1. 在服务器 /opt/www/ace/ 目录下部署静态资源 login.html
  2. 修改nginx核心配置文件,位于/user/local/nginx/conf/nginx.conf
    在这里插入图片描述
    注意:root 的值(/opt/www)对应 /ace 中 / 的值,所以,当请求的 url 为 /ace时,请求资源路径为 /opt/www/ace
  3. 启动nginx,浏览器访问:http://服务器ip地址:80/ace

2、负载均衡

负载均衡概述

网站创立初期,一般使用单机对外提供集中式服务。随着业务量增大,一台服务器不够用,此时就回把多台机器组成一个集群提供对外服务,但是,我们的网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器上输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求“均匀”分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

负载均衡实现方式

  1. 硬件负载均衡
    比如 F5、深信服、Array 等
    优点:有厂商专业的技术服务团队提供支持,性能稳定
    缺点:费用昂贵,对于规模小的网络应用成本高
  2. 软件负载均衡
    比如 Nginx、LVS、HAProxy
    优点:免费开源、成本低廉
  3. Nginx负载均衡
    Nginx通过在nginx.conf文件进行配置,即可实现负载均衡(默认轮询策略)
    在这里插入图片描述
    upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障机器。

Nginx负载均衡策略

  1. 轮询(默认)
upstream backserver{server 192.168.0.1:80;server 192.168.0.2:80;
}	

注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景。如果后端服务器down掉,将自动提出

  1. 权重
upstream backserver{server 192.168.0.1:80 weight=5;server 192.168.0.2:80 weight=2;
}	

每个请求按一定比例分发到不同的后端服务器,weight 值越大访问的比例越大,用于后端服务器性能不均匀的情况。
weight值5和2,代表服务器192.168.0.1处理5个请求的时间和服务器192.168.0.2处理2个请求的时间是一样的。

  1. ip_hash
    算法:hash(“192.168.0.1”)%2=0,1
upstream backserver{ip_hash;server 192.168.0.1:80 weight=5;server 192.168.0.2:80 weight=2;
}	

ip_hash也叫做IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失问题。但可能会导致某台服务器压力过大。

  1. 最少连接
upstream backserver{least_conn;server 192.168.0.1:80 weight=5;server 192.168.0.2:80 weight=2;
}	

web请求会被转发到连接数量最少的服务器上。

负载均衡其他配置

  • 配置1:
upstream backserver{server 192.168.0.1:80;# 其他所有的非backup机器down的时候,才会请求backup机器。server 192.168.0.2:80 backup;
}	
  • 配置2:
upstream backserver{server 192.168.0.1:80;# down表示当前server是down的状态,不参与负载均衡。server 192.168.0.2:80 down;
}	

一般在项目升级的时候,可以先对backup服务器升级(用户访问不到),然后取消其backup状态,并设置其他服务器为down,再升级其他的服务器,升级完毕取消down的状态即可。然后对Nginx重新reload,reload不会影响用户的访问,或者可以给一个提示页面,系统正在升级。

3、静态代理

把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长静态资源的处理,性能更好,效率更高

所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。
在这里插入图片描述

静态代理实现方式

方式一、在 nginx.conf 的 location 中配置静态资源的后缀
例如:当访问静态资源,则从 linux 服务器 /opt/static 目录下获取

location  ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${root /opt/static;
}

说明:

  • 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
  • 第一个 . 表示任意字符
  • * 表示一个或者多个字符
  • \.是转义字符,是后面这个点的转义字符
  • 表示或者
  • $ 表示结尾

整个配置表示以 .js/css/html…为后缀结尾的文件都由nginx处理,返回静态资源的目录为/opt/static,要注意目录权限问题,如果权限不足,就给目录赋予权限;否则会出现403错误 chmod 755

方式二、在 nginx.conf 的 location 中配置静态资源所在目录实现
例如:当访问静态资源,则从 linux 服务器 /opt/static 目录下获取

location  ~ .*/(js|css|img|images)${root  /opt/static;
}

整个配置表示访问路径 xxx/css、xxx/js、xxx/img、xxx/images 时由nginx处理,返回静态资源的目录为/opt/static。

4、动静分离

静态资源由nginx处理
动态资源由tomcat处理
架构图如下:
在这里插入图片描述
中间负责负载均衡的Nginx的配置:
在这里插入图片描述
在这里插入图片描述
右下角负责静态资源代理的Nginx的配置:
在这里插入图片描述

5、虚拟主机

虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。

Nginx提供虚拟主机这个功能,就是为了让我们不需要安装多个Nginx,就可以运行多个域名不同的网站。

Nginx下,一个server标签就是一个虚拟主机。nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可。

例如:www.meituan.com 切换城市,可以看到不同的城市地址不一样(二级域名)
如果一个公司有多个二级域名,没有必要为每个二级域名都提供一台Nginx服务器,就可以使用虚拟主机技术,在一台ngnix服务器上,模拟多个虚拟服务器。

配置虚拟主机方式

方式一、基于端口的虚拟主机(了解)

基于端口的虚拟主机配置,使用端口来区分。由于一般我们不写端口号,这个一般就不用。

server{listen   8080;server_name   www.myweb.com;location   /myweb{proxy_pass   http://www.myweb1.com;}
}
server{listen   8081;server_name   www.myweb.com;location   /myweb{proxy_pass   http://www.myweb2.com;}
}

方式二、基于域名的虚拟主机(掌握)

基于域名的虚拟主机配置,使用域名来区分。常用方式。

server{listen   80;server_name   www.myweb1.com;location   /myweb{proxy_pass   http://www.myweb1.com;}
}
server{listen   80;server_name   www.myweb2.com;location   /myweb{proxy_pass   http://www.myweb2.com;}
}

需要修改本地hosts文件:

192.168.21.1  www.myweb1.com
192.168.21.1  www.myweb2.com

架构图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 将文本建模为关系图,用于联合实体和关系提取

论文笔记整理:余海阳,浙江大学硕士,研究方向为知识图谱、自然语言处理。链接:https://www.aclweb.org/anthology/P19-1136动机本文提出了一种利用图卷积网络(GCNs)联合学习命名实体和关系抽取的端到端抽取模…

LeetCode 144. 二叉树的前序遍历(前序遍历)

文章目录1. 题目信息2. 解题2.1 递归2.2 循环,必须掌握1. 题目信息 给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1\2/3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣…

设计模式在外卖营销业务中的实践

一、前言 随着美团外卖业务的不断迭代与发展,外卖用户数量也在高速地增长。在这个过程中,外卖营销发挥了“中流砥柱”的作用,因为用户的快速增长离不开高效的营销策略。而由于市场环境和业务环境的多变,营销策略往往是复杂多变的&…

RabbitMQ 简介和使用

RabbitMQ一、RabbitMQ概述1、什么是消息队列2、为什么要使用消息队列3、RabbitMQ特点二、RabbitMQ安装1、安装前准备1.1 依赖包安装1.2 安装Erlang2、安装3、常用命令3.1. 启动和关闭3.2. 插件管理3.3. 用户管理3.4. 权限管理3.5. vhost管理三、RabbitMQ消息发送和接收1、 Rabb…

Transformer哪家强?Google爸爸辨优良!

文:Zilong2017年Attention is all you need横空出世,Transformer横扫机器翻译,隔年诞生的BERT建立在层层堆叠的Transformer之上,凭借这个平平无奇的Attention点乘模型一举刷新了各种沉积许久的榜单,一夜间仿佛不懂Tran…

CCKS 2019 | 百度 CTO 王海峰详解知识图谱与语义理解

本文转载自公众号:机器之心。; 8 月 24 日至 27 日在杭州召开的 2019 年全国知识图谱与语义计算大会(CCKS 2019)上,百度 CTO 王海峰发表了题为《知识图谱与语义理解》的演讲。CCKS 2019 由中国中文信息学会语言与知识计…

LeetCode 145. 二叉树的后序遍历(后序遍历总结)

文章目录1. 题目信息2. 解法2.1 递归2.2 循环,必须掌握a. 单栈b. 双栈解法3. 前中后序总结1. 题目信息 给定一个二叉树,返回它的 后序 遍历。 示例:输入: [1,null,2,3] 1\2/3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗…

云原生之容器安全实践

概述 云原生(Cloud Native)是一套技术体系和方法论,它由2个词组成,云(Cloud)和原生(Native)。云(Cloud)表示应用程序位于云中,而不是传统的数据中…

领域应用 | HiTA知识图谱 “药品-适应证”图谱数据发布!

本文转载自公众号:OMAHA联盟。2019年8月,OMAHA对HiTA知识图谱服务平台(kg.omaha.org.cn)进行了更新,同步发布了医学知识图谱表达模型(schema)。2019年9月17日,首次发布了由OMAHA研发…

主题模型综述:短文本、细粒度、加入先验知识、作者写作偏好、主题内涵随时间的变迁、融入词嵌入特性、语言模型加持

原文链接:https://www.zhihu.com/question/34801598/answer/765580727 主题模型当然有用咯,谁用谁知道!这次我来展示下它的7个“变种”(短文本、细粒度、加入先验知识、作者写作偏好、主题内涵随时间的变迁、融入词嵌入特性、语言模型加持)&a…

完全解析:使用Faiss进行海量特征的相似度匹配

文 | Gemfield源 | 知乎Faiss为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库。本文从最基本的特征比对开始讲解,中间详细讲解Faiss的环境配置以及使用步骤,最后落脚到为什么我们需要…

LeetCode 173. 二叉搜索树迭代器(中序遍历)

文章目录1. 题目信息2. 二叉树中序遍历1. 题目信息 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator new BSTIterator(root); iterator.next(); // 返…

论文浅尝 | 面向时序知识图谱推理的循环事件网络

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。来源:arXiv (short version accepted at ICLR 2019Workshop on Representation Learning on Graphs and Manifolds)链接:https://arxiv.org/abs/1904.05530…

Android实现炫酷的星空变幻效果

二话不说,先上效果图: 这个图是什么意思呢,有没有看到一直在变颜色啊,有没有很像星云变幻呢,有没有很炫,快来看看怎么实现的吧! 这是我们要被处理的原图,实现方式就是通过不断的改变…

美团配送数据治理实践

大数据时代的到来,让越来越多的企业看到了数据资产的价值。将数据视为企业的重要资产,已经成为业界的一种共识,企业也在快速探索应用场景和商业模式,并开始建设技术平台。 但这里要特别强调一下,如果在大数据“拼图”中…

这可能是你近 2 年发论文最好机会!

几年前如果熟练使用TensorFlow,同时掌握基本的AI算法就可以很容易找到一份高薪的工作,但现在不一样了,AI岗位的要求越来越高,对知识的深度也提出了更高的要求。如果现在一个面试官让你从零推导SVM的Dual、从零实现CRF、推导LDA、设…

LeetCode 671. 二叉树中第二小的节点

文章目录1. 题目信息2. 解题2.1 递归查找2.2 改循环1. 题目信息 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一…

论文浅尝 | 多标签分类中的元学习

论文笔记整理:叶群,浙江大学计算机学院,知识图谱、NLP方向。会议:EMNLP 2019链接:https://arxiv.org/abs/1909.04176Abstract这篇论文首次在多标签分类问题中提出了 meta-learning 的方法,学习weight polic…

从源码角度分析Android系统的异常捕获机制是如何运行的

我们在开发的时候经常会遇到各种异常,当程序遇到异常,便会将异常信息抛到LogCat中,那这个过程是怎么实现的呢? 我们以一个例子开始: import android.app.Activity; import android.os.Bundle;public class MainActivit…

法律规则鬼畜图解||全面易懂的旅游投诉赔偿标准

法律规则鬼畜图解||全面易懂的旅游投诉赔偿标准https://zhuanlan.zhihu.com/p/82878902 执笔人:张宗保律师(联系方式:知乎私信)执业地域:深圳市执业方向:民商事诉讼一、赔偿标准的适用前提只有在旅游者和旅…