ToB企服应用市场:ToB评测及商务社交产业平台

标题: 一文快速搞懂Nginx —— Nginx 详解 [打印本页]

作者: 东湖之滨    时间: 2024-6-28 07:43
标题: 一文快速搞懂Nginx —— Nginx 详解
一、nginx 简介

   NginxApache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者 统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议 提供各种网络服务。

Nginx是一款 轻量级 的 Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发本领强,在互联网项目中广泛应用。
  


    总而言之,Nginx是一个高性能、灵活和可扩展的Web服务器和代理服务器,适用于各种场景,包括静态文件服务、反向代理、负载均衡和动态内容处置惩罚等。
二、正向 / 反向代理

    经常听人说到一些术语,如反向代理,那么什么是反向代理,什么又是正向代理呢?
2.1 正向代理

    由于防火墙的原因,我们并不能直接访问谷歌、推特,看GitHub等等,那么我们可以借助 VPN 来实现,这就是一个简朴的正向代理的例子。这里你能够发现,正向代理代理” 的是 客户端,而且 客户端知道目的的,而目的是不知道客户端是通过VPN访问的。

2.2 反向代理

    当我们在 外网 访问百度的时候,实在会进行一个转发代理到内网去,这就是所谓的反向代理(Reverse Proxy),即 反向代理代理” 的是 服务器端,而且这一个过程对于客户端而言是透明的。

    再比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,由于服务器中间 session 不共享,那我们是不是在服务器之间访问需要频仍登录,那这个时候淘宝搭建一个 过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给 反向代理服务器,由反向代理服务器去选择目的服务器获取数据后,再返回给客户端,此时反向代理服务器和目的服务器对外就是一个服务器,袒露的是代理服务器所在,隐蔽了真实服务器的所在。

三、负载均衡

    单个服务器解决不了,我们增长服务器的数量,然后将请求分发到各个服务器上,将原先请求会合到单个服务器上的情况改为将请求分发到多个服务器上,将负载均衡分发到不同的服务器,也就是我们所说的负载均衡
    负载均衡(Load Balance)其意思就是分摊到多个利用单位上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
       简朴来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那如今我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有本身的不同,所以怎么分?如何分配更好?又是一个问题。
  Nginx给出来三种关于负载均衡的方式:
(1) 轮询法(默认方法):

   恰当服务器配置相称,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
  (2) weight 权重模式(加权轮询):

   这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充实发挥,有用利用资源。weight 和 访问比率 成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
  

       上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,由于我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
  (3) ip_hash:


四、动静分离

     动静分离,在我们的软件开发中,有些请求是需要后台处置惩罚的,有些请求是不需要经过后台处置惩罚的(如:css、html、jpg、 js 等文件),这些不需要经过后台处置惩罚的文件称为 静态文件。让动态网站里的动态网页根据一定规则把稳定的资源和经常变的资源区分开,动态资源做好了拆分以后,我们就可以根据 静态资源 的特点将其做缓存利用,以进步资源的响应速率。
     Nginx的 静态处置惩罚 本领很强,但是动态处置惩罚本领不足,因此,在企业中常用动静分离技术


    现在,通过使用Nginx大大进步了网站的响应速率,优化了用户体验,让网站的结实性更上一层楼!
五、web 缓存

    缓存,是 Nginx 提供的,可以加快访问速率的机制,说白了,在配置上就是一个开启,同时指定目次,让缓存可以存储到磁盘上。详细配置,大家可以参考Nginx官方文档,这里就不在展开了。
六、Nginx 安装

    Nginx跨平台的,因此,在任何平台都是可以下载的;官网 下载。
6.1 windows版本下的安装

(1)起首去官网下载最新的稳定版本:



(2)启动

   注意:假如安装目次是中文的情况,打开exe文件时会报错。
  (3)查抄是否安装成功

另外说明:配置监听


(4)、关闭Nginx
    假如使用 cmd 下令窗口启动nginx, 关闭 cmd 窗口是不能结束 nginx历程的,可使用两种方法关闭nginx
方法一
    Nginx的安装包目次下。否则无法找到Nginx

       这两个下令的区别在于 nginx -s stop 是快速制止Nginx,而nginx -s quit 是有序的制止Nginx,前者可能会导致数据没有完全生存
  方法二
    使用 taskkill /f /t /im nginx.exe

       这种方法可以直接在 cmd 下令面板上使用,当第一种方法无效时可以尝试使用此方法,前第一种方法适用于大部分版本的Nginx,但是个别版本的可能不实用,使用 taskkill 就可解决。
  6.2 Linux版本下的安装

(1)下载安装包:


  1. tar -zxvf nginx-1.24.0.tar.gz
复制代码

  1. # 依次输入
  2. ./configure
  3. make
  4. make install
复制代码

  1. # 开启service firewalld start
  2. # 重启service firewalld restart
  3. # 关闭service firewalld stop
  4. # 查看防火墙规则firewall-cmd --list-all
  5. # 查询端口是否开放firewall-cmd --query-port=8080/tcp
  6. # 开放80端口firewall-cmd --permanent --add-port=80/tcp
  7. # 移除端口firewall-cmd --permanent --remove-port=8080/tcp#重启防火墙(修改配置后要重启防火墙)firewall-cmd --reload
  8. # 参数解释1、firwall-cmd:是Linux提供的操作firewall的一个工具;2、--permanent:表示设置为持久;3、--add-port:标识添加的端口;
复制代码
七、常用下令

  1. cd /usr/local/nginx/sbin/
  2. ./nginx  # 启动
  3. # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务
  4. nginx -s stop
  5. # 平稳关闭Nginx,保存相关信息,有安排的结束web服务
  6. nginx -s quit
  7. # 因改变了Nginx相关配置,需要重新加载配置而重载
  8. nginx -s reload
  9. # 重新打开日志文件
  10. nginx -s reopen
  11. # 为 Nginx 指定一个配置文件,来代替缺省的
  12. nginx -c filename
  13. # 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件
  14. nginx -t
  15. #  显示 nginx 的版本
  16. nginx -v
  17. # 显示 nginx 的版本,编译器版本和配置参数
  18. nginx -V
  19. # 格式换显示 nginx 配置参数
  20. 2>&1 nginx -V | xargs -n1
  21. 2>&1 nginx -V | xargs -n1 | grep lua
复制代码
八、为什么选择Nginx

    Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处置惩罚,另外Nginx可以作为反向代理进行负载均衡的实现。在Nginx网站上,其功能包括:

Nginx有如下优势
   如何明白呢?举个例子吧!

有A、B、C三个老师,他们都遇到一个困难,要资助一个班级的学生解决讲堂作业。
  
  这个老师C就是 Nginx
     功能模块少 - Nginx仅保留了 HTTP 需要的模块,其他都用插件的方式,后天添加
代码模块化 - 更恰当二次开发,如阿里巴巴 Tengine
     把CPU焦点和Nginx 工作历程绑定,把每个worker历程固定在一个CPU上执行,淘汰切换CPU的 cache miss,从而进步性能。
  
仅供学习参考,如有不足,欢迎指正。
参考文章
1. Nginx详解
2. 8分钟带你深入浅出搞懂Nginx
3. Nginx 配置详解
4. Nginx详解(一文带你搞懂Nginx)
5. nginx基本介绍(安装、常用下令、反向代理)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4