Nginx一些列知识点

俄罗斯人开发的
读作:engine X
免费、开源、高性能的http服务器和反向代理服务器,通用的TCP/UDP代理服务器解决C10k问题
官网:http://nqinx.orq
二次开发版
Tengine(淘宝的架构)
OpenResty:大佬自己写的另一个版本的Nginx

特点:模块化设计,具有较好的扩展性
高可靠性
支持热部署,不停机更新配置文件,包括升级版本,更新日志文件,添加或者删除模块
低内存消耗,一万个Kepp-Alive连接模式下的非活动连接,仅需要2.5M内存

基本功能:静态的WEB服务器
HTTP协议的反向代理
POP3/IMAP4协议反向代理服务器
FastCGL(LNMP)/uWCGI(Python)协议

WEB服务器相关功能

第一种:yum安装

前提:关闭防火墙、关闭SE
(可以先拍快照)
1、去官网下载nginx的yum源

第二种:源码安装(生成环境常采用的操作)

1、获取源码包
2、停止原有的WEB服务器
netstat -luntp | grep 80
如果有的话
systemctl stop httpd

3、添加账号用来管理nginx
useradd -M -s /sbin/nologin nginx

4、解压安装nginx
解压
tar zxvf nginx-1.14.0.tar.gz
安装
cd nginx-1.14.0
1 配置(configure) ./configure --help | more 查看详细的配置手册
./configure --prefix=/usr/local/nginx --user=ningx --group=nginx
(注意:可能会报错)
解决软件依赖问题
yum install -y gcc zlib zlib-devel
yum install -y gcc pcre-devel openssl openssl-devel

重新配置
./configure --prefix=/usr/local/nginx --user=ningx --group=nginx

2 编译(make)
make
3 安装
make install

5、启动
/usr/local/nginx/sbin/nginx [选项]
-h 查看帮助
-v 查看nginx版本
-V 查看编译参数
-t 测试配置文件语法是否正确
-c 加载指定位置的配置文件
-s 对nginx进行stop,quit,reopen,reload操作

Nginx配置
主配置文件:/usr/local/nginx/conf/nginx.conf
主配置文件的结构:
1、主配置段,即全局配置段,对http、mail都有效
一般有运行nginx服务器的用户组,nginx的进程的PID存放路径,日志存放路径,配置文件的引入,允许生成worker process数等
2、events块:配置影响nginx服务器与用户的网络连接,包括每个进程的最大连接数。
选取哪些事件驱动模型处理连接请求,是否允许同时接受多个网络连接、开启多个网卡连接的序列化等
3、http块:可以嵌套多个server,配置代理、缓存、日志定义等绝大多数的功能和第三方模块配置。如文件引入。mime-type的定义,日志的自定义、是否使用sendfile传输文件,连接超时时间,单连接请求数等
4、server块:配置虚拟主机的相关参数,一个http块中可以有多个server
5、location块:配置请求路由,以及各个页面的处理情况

Nginx的虚拟主机
1、创建目录和文件
[root@ops14 nginx-1.14.0]# mkdir -pv /usr/local/nginx/html/{dudu,xuanxuan}
mkdir: created directory ‘/usr/local/nginx/html/dudu’
mkdir: created directory ‘/usr/local/nginx/html/xuanxuan’
[root@ops14 nginx-1.14.0]#
[root@ops14 html]# ls
50x.html dudu index.html xuanxuan
[root@ops14 html]# echo “Dudu is a good boy” > /usr/local/nginx/html/dudu/index.html
[root@ops14 html]# echo “xuanxuan is a good boy too” > /usr/local/nginx/html/xuanxuan/index.html

2、修改配置文件
vim /usr/local/nginx/conf/nginx.conf
配置两个虚拟主机
基本语法:
server{
listen 80;
server_name xuanxuan.sclinux.cn;
root /usr/local/nginx/html/xuanxuan;
}

测试配置文件的语法是否正确
/usr/local/nginx/sbin/nginx -t

重启服务
/usr/local/nginx/sbin/nginx -s reload

测试
Linux下
vim /etc/hosts
添加下面的内容
192.168.10.141 dudu.sclinux.cn
192.168.10.141 xuanxuan.sclinux.cn

Windows下:
C:\Windows\System32\drivers\etc\hosts
添加下面的内容
192.168.10.141 dudu.sclinux.cn
192.168.10.141 xuanxuan.sclinux.cn

代理服务器
它是网络信息的中转站,是个人网络和Internernet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。

分类:
正向代理服务器
反向代理服务器

正向代理服务器
在如今的网络环境下,我们如果由于技术需要去访问某些国外的网站,此时你会发现位于国外的某些网站我们通过浏览器是无法访问对象,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们。
上述这样的代理模式成为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

正向代理,它代理的是客户端,是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途:
1、访问原来无法访问的资源,如Google、Tik tok
2、可以做缓存,加速访问资源
3、对客户端访问授权,上网进行认证
4、代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理服务器
举例如某宝,每天大量的并发链接,单个服务器远远不能满足人们日益增长的购物需求了,此时出现两个词:集群、分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用Nginx进行反向代理实现的,并且通过封装Nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的同学可以访问Tengine的官网查看具体的信息:http://tengine.taobao.org
反向代理的具体实现可以参考如下示意图

多个客户端给服务器发送请求,Nginx服务器接收到请求后,按照一定的规则分发给后端的业务处理服务器。此时请求的来源也就是客户端是明确的,但是对客户端来说,是不知道具体哪台服务器在处理请求。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理,因为客户端不需要任何配置就可以访问。
反向代理,它代理的是服务端,主要用于分布式服务器集群,隐藏了服务器的信息
反向代理的作用:
1、保证内网的安全,通常将反向代理作为公网的访问地址,WEB服务器是内网
2、负载均衡,通过反向代理服务器来优化网站的负载

二者区别

在正向代理中,Proxy和Client同属于一个LAN(图中方框内),隐藏了客户端信息;
在反向代理中,Proxy和Server同属于一个LAN(图中方框内),隐藏了服务端信息;
实际上,Proxy在两种代理中做的事情都是代替服务器去收发请求和响应,不过从结构上看正好左右互换了一下,所以把后出现的那种代理方式称作反向代理。

负载均衡
1、轮询
2、加权轮询
3、ip_hash

实例:
实验环境:
代理服务器:192.168.190.210
WEB服务器:192.168.190.211
WEB服务器:192.168.190.212
WEB服务器:192.168.190.213

1、轮询设置
修改配置文件/usr/local/nginx/conf/nginx.conf
(放在第一个server上方)
#gzip on;
upstream seecen{
server 192.168.190.211;
server 192.168.190.212;
server 192.168.190.213;
}

2、加权轮询
如果真实服务器性能不同,为了保证每个服务器都能满足最大访问。可以加入权重,权重值越高,分到的请求越多。
upstream seecen{
server 192.168.190.211 weight=1 max_fail=2 fail_timeout=30s;
server 192.168.190.212 weight=5;
server 192.168.190.213 backup;
}
weight:表示权重,权重越高,分到的请求越多
backup:备用服务器
max_fail:表示最大失败次数
fail_timeout:表示如果请求受理失败,暂停指定时间后重新发起请求

3、IP HASH
为了保证短时间内,同一个客户端的请求不被分配到其他的服务器上
upstream seecen{
ip_hash;
server 192.168.190.211;
server 192.168.190.212;
server 192.168.190.213;
}

猜你喜欢

转载自blog.csdn.net/weixin_51014063/article/details/109055877