nginx学习

本文详细介绍了Nginx的起源、特点及常用版本,包括Nginx开源版、Nginx Plus、OpenResty和Tengine。接着,演示了Nginx在Linux上的安装步骤,强调了依赖包的安装和配置文件的解析。此外,文章还讲解了Nginx的基础配置,如反向代理、虚拟主机设置和负载均衡策略,包括轮询、权重分配和故障转移。最后,讨论了Nginx在保持会话、动静分离和防盗链等方面的应用。
摘要由CSDN通过智能技术生成

Nginx的诞生

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,非常受中国很多互联网公司青睐。

Nginx的常用功能

作为web服务器最常用的功能之一,尤其是反向代理。Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

Nginx常用的四大版本

常用版本分为四大阵营

  • Nginx开源版(二次开发难度大)
    • http://nginx.org/
  • Nginx plus 商业版(全家桶)
    • https://www.nginx.com
  • Openresty
    • http://openresty.org
  • Tengine(C语言形式的开发,模块化)
    • http://tengine.taobao.org/

安装Nginx开源版本

使用的版本nginx-1.21.6.tar.gz

下载地址:http://nginx.org/download/

下载完成之后上传到linux服务器并解压,之后进入解压的文件夹结构如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VGtbcEjP-1654183436964)(https://gitee.com/shuo-Codinghan/pic/raw/master/20220411220303.png)]

安装nginx需要的依赖

首先使用命令

./configure --prefix=你想要安装的目录结构

如果提示了错误信息就先安装依赖

yum install -y gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel

之后在使用如下命令

./configure --prefix=你想要安装的目录结构

成功之后使用make命令刷新

make
make install

之后进入到你安装的nginx目录下面结构如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sGamgRL9-1654183436965)(https://gitee.com/shuo-Codinghan/pic/raw/master/20220411221827.png)]

启动nginx

进入sbin目录下

使用如下命令启动服务

./nginx 启动
./nginx -s stop 停止
./nginx -s quit 优雅关闭,在退出钱王城已经基尔兽的连接请求
./nginx -s reload 重新加载配置
ps -ef|grep nginx 查看nginx是否启动

检查是否启动成功

打开浏览器输入服务器的IP

如果无法访问可能是防火墙的问题,使用关闭防火墙命令

systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 禁止防火墙开机自动启动
firewall-cmd --zone=public --add-port=8080/tcp --permanent 开启8080端口
systemctl restart firewalld.service//重启防火墙
firewall-cmd --reload//重新载入配置
firewall-cmd --list-ports//查看开放端口

如果想要配置脚本可以去百度搜一下nginx配置启动脚本

认识nginx目录结构

主要的目录如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kvCYY9lZ-1654183436965)(https://gitee.com/shuo-Codinghan/pic/raw/master/20220411223542.png)]

conf是核心的配置文件主要是nginx.conf文件

html主要放静态页面

logs主要是记录日志

sbin是启动nginx的服务的文件夹

Nginx基础配置(重点,快速认识)

在nginx的默认配置文件在/conf/nginx.conf

  • worker_processes:工作的进程个数–对应cpu的物理内核数进行配置,一个内核对应一个(通常)
  • worker_connections:每个进行可以创建多少的连接(推荐1024)
  • include :开发中可以每个人配置多个配置文件,使用这个可以把每个人的配置文件引入到主配置文件中,mime:types;是一个请求头,服务器端访问的是什么文件
  • default_type:默认类型,如果mime:types;中没有配置的时候,默认走的这个类型
  • sendfile:指的是数据零拷贝(免除了复制粘贴的内容,直接下载)
  • keepalive_timeout:保持连接超时的时间(保持长连接,反向代理讲解)
  • listen:监听的端口号,一个server代表一个虚拟主机,每一个主机之间互相不干扰
  • server_name:主机名,可以配置域名或者主机名
  • location:域名后面跟的路径url(后面主要讲)
  • root html:请求接进来之后走那个目录
  • index :默认展示页面
  • error_page:发生服务器错误的时候,会返回这些配置页面
  • error_page中的location root:如果错误会直接去html文件夹中找页面并展示

以上就是配置文件的基本解读,没有太深的理解没有关系,后面我们会进行实战的操作,再做一一的解读

Nginx配置虚拟主机

    server {
        listen       9001;
        server_name  114.55.142.184;

        114.55.142.184 / {
            root   /home/data/index.html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

与server同级复制上面的内容,listen:监听的端口,root:你要访问的根目录,只需要区分端口号就可以

重启nginx

systemctl reload nginx

ServerName的匹配规则

顺序匹配,如果前面的server匹配上了,后面的就不再进行匹配

也可以配置多个name如下

server_name name1 name2;

通配符,*是都可以匹配

server_name *.conm

通配符的结束匹配

server_name www.xxx.*;

也可以使用正则匹配

server_name ~^[0-9]+\.xxxx\.com$;

反向代理

什么是反向代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AyjJHJad-1654183436966)(https://gitee.com/shuo-Codinghan/pic/raw/master/20220412215427.png)]

  • 用户访问网关,网关将请求发送到nginx,再发送到后台
  • 用户不可以直接访问服务器

正向代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVkJauCU-1654183436966)(https://gitee.com/shuo-Codinghan/pic/raw/master/20220412215617.png)]

  • 由我们自己主动配置代理服务器去访问外网是正向代理

负载均衡

  • nginx代理了很多太服务器,突然后一台服务器不可用,nginx可以将请求转移到另一台服务器集群,称之为故障转移,每一次请求都能到达每一台服务器上,也是一种算法->轮询算法,还有一种机制是retry,重试机制(如果一个请求发送完成,但是发现不可行,会进行重新请求)

Nginx配置反向代理

  • 在location块下面使用proxy_pass
  • proxy_pass http://www.hanshuo.com;这样配置就会被代理到这里,如果配置了proxy_pass就不需要配置root
  • proxy_pass 不支持https

Nginx配置负载均衡

在配置负载均衡的时候我们先来学习一下别名

在server同级使用upstream可以来给要代理的服务器定义别名

upstream 别名{
		server ip:端口;
		server ip:端口;
	}
server{
	 listen 80;
	 server_name location;
	 
	 location /{
	 		proxy_pass http://别名
	 	}
	}

如上我们的负载均衡就配置完成了

负载均衡的策略

轮询策略

轮询策略无法保持会话

因为访问的服务器是轮询的,当用户去访问了一台服务器之后,这台服务器会保存session,如果有一台服务器用户没有访问过,这台服务器是没有用户的session的所以不能保持会话

权重(weight)

通过权重去分配访问的次数

upstream 别名{
		server ip:端口 weight=1 down;(如果加上了down就不再参与负载均很)
		server ip:端口 weight=2 backup;(backup备用机器,正常是不访问的,其他的都不能用的时候会用这个)
	}
server{
	 listen 80;
	 server_name location;
	 
	 location /{
	 		proxy_pass http://别名
	 	}
	}

上面的down等关键字我们是不经常用的,有的时候会来不及,所以我们会使用动态的;

iphash策略

他会判断ip的来源地址,相同的ip会让他访问上一次访问过的后台服务器

least_conn策略

最少连接访问,保证后端服务器更加均衡

fair策略(第三方插件)

根据后端服务器响应时间转发请求会造成流量倾斜

urlhash策略(插件)

定向流量转发,哈希值不会保持一直,不能解决会话问题

解决策略(无状态的会话保持)

用一个服务器存储session,使用tocken,来进行校验

其他功能不经常使用所以本文章不做介绍,可以自行去网站进行观看

动静分离 https://baijiahao.baidu.com/s?id=1711141108255052096&wfr=spider&for=pc

防盗链 https://www.jb51.net/article/161872.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding_Bryce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值