Nginx详解(一文带你搞懂Nginx)

2023年 9月 23日 37.5k 0

一、Nginx是什么?

  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
  • Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。
  • Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

二、Nginx的反向代理(扩展:正向代理)

首先,看一张关于正向代理和反向代理的图片
在这里插入图片描述
在这里,用通俗易懂的方式解释一下:

正向代理:  我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)

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

三、Nginx的负载均衡

什么是负载均衡?

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简单来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一个问题。

Nginx给出来三种关于负载均衡的方式:

  • 轮询法(默认方法):
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。
  • weight权重模式(加权轮询):
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的
    情况。
    这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
  • ip_hash:
    上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。
    我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  • 四、Nginx的动静分离!

    Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式
    目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!
    在这里插入图片描述

    五、Nginx的安装

    Nginx的跨平台的,因此,在任何平台都是可以下载的。

    windows版本下的安装

    下载

    首先去官网下载最新的稳定版本:官网下载点我
    下载后解压打卡:
    你会看见一下目录。
    在这里插入图片描述

    启动

    启动方式一:双击nginx.exe,双击后你能看见一个小黑窗口一闪而过。
    启动方式二:打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可

    注意:如果安装目录是中文的情况,打开exe文件时会报错。

    检查是否安装成功

    打开浏览器:浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!
    在这里插入图片描述

    配置监听

    nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。
    当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效
    在这里插入图片描述

    关闭Nginx

    如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx
    方法一:(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx),这两个命令的区别在于nginx -s stop是快速停止Nginx,而nginx -s quit是有序的停止Nginx,前者可能会导致数据没有完全保存;

    方法二:(2)使用taskkill taskkill /f /t /im nginx.exe

    注意:方法一必须要在Nginx的安装包目录下。否则无法找到Nginx。

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

    注解:taskkill是用来终止进程的,/f是强制终止 ./t终止指定的进程和任何由此启动的子进程。
    		/im示指定的进程名称 .
    
    12
    

    Linux版本下的安装

    下载安装包:
    它后面那个就是Windows版本下载的。
    在这里插入图片描述
    下载完毕上传到服务器上 /root

    解压

    tar -zxvf nginx-1.18.0.tar.gzcd nginx-1.18.0
    
    1
    

    在这里插入图片描述

    配置

    ./configuremakemake install
    
    1
    

    查找安装路径: whereis nginx
    在这里插入图片描述

    启动

    启动成功访问 服务器ip:80
    在这里插入图片描述
    注意:如何连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口!
    相关命令:

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

    六、Nginx常用命令

    cd /usr/local/nginx/sbin/
    ./nginx  启动
    ./nginx -s stop  停止
    ./nginx -s quit  安全退出
    ./nginx -s reload  重新加载配置文件  如果我们修改了配置文件,就需要重新加载。
    ps aux|grep nginx  查看nginx进程
    
    123456
    

    总结

    学习不易,文章内容是为在学习的过程中,总结的。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论