学习nginx基础知识


Posted in Servers onSeptember 04, 2021
目录

一.什么是nginx?

nginx是一个高性能的http和反向代理的web服务器,占内存少,并发力强。有报告显示nginx可以高达50000个并发连接数。

二.nginx能干什么?

  • 反向代理
  • 负载均衡
  • 动静分离
  • 高可用集群

2.1 什么是正向代理?

客户端(浏览器)配置代理服务器,通过代理服务器进行互联网之间的访问。

2.2 什么是反向代理?

客户端将请求发送到反向代理服务器,由反向代理服务器去获取数据后,再返回给客户端。

学习nginx基础知识

2.3负载均衡

客户端发送多个请求到服务器,服务器处理请求,由一些数据需要和数据库进行交互,服务器处理完毕后,再将结果返回给客户端。

学习nginx基础知识

如果单个服务器解决不,就搭建服务器集群实现

学习nginx基础知识

2.4 动静分离

为了提高网站的解析速度,将动态页面和静态页面由不同的服务器来解析,降低原来单个服务器的压力。

学习nginx基础知识

三.nginx基本操作

1.使用之前,先进入nginx目录
2.查看nginx的版本号

./nginx -v

3.启动nginx

./nginx

4.关闭nginx

./nginx -s stop

5.重新加载nginx

./nginx -s reload

6.查看nginx的状态

ps -ef | grep nginx

3.1 nginx配置文件 nginx/conf/nginx.conf

1.全局块

从配置文件到events块之间的内容。

2.events块

events块指令主要影响nginx服务器与用户的网络连接,worker connections 1024 支持的最大连接数

3.http块

3.2 防火墙设定

// 查看开放的端口号
firewall-cmd --list-all

// 设置开放的端口号
firewall-cmd --add-service=http ?permanent		// 在防火墙中永久开启 http 服务
firewall-cmd --add-port=80/tcp --permanent		// 在防火墙中永久开启 80 端口

// 重启防火墙
firewall-cmd ?reload

四.反向代理实现案例

4.1.Nginx反向代理的实现案例1

效果:输入一个地址,跳转到tomcat首页

nginx 配置反向代理,主要是通过 proxy_pass 配置进行请求的转发

1.hosts 文件域名配置

在windows系统的host文件(C盘Windods/System32/driver/etc/hosts)进行域名和ip对应关系的配置

学习nginx基础知识

2.nginx里进行请求转发的配置(反向代理配置) nginx.conf

主要修改 server_name、proxy_pass 两个配置:

  • server_name:主机IP
  • proxy_pass:nginx 代理地址

学习nginx基础知识

测试成功

学习nginx基础知识

4.2Nginx反向代理的实现案例2

使用nginx反向代理,根据访问的路径跳转到不用的服务端口中,nginx监听端口是9001

1.准备工作

部署tomcat 8080

部署tomcat8081

因为tomcat默认的端口号是8080,所以要设定tomcat的端口号时,需要修改server.xml中的部分端口,启动tomcat

在两个tomcat文件中找到webapps,在其目录下建立两个文件edu,vod,里面放入里那个html页面,并测试页面可成功访问。

2.找到nginx配置文件 nginx.conf

server {
    listen       9001;
    server_name  192.168.25.101;

    location ~ /edu/ {
        proxy_pass  http://127.0.0.1:8080;
    }

    location ~ /vod/ {
        proxy_pass  http://127.0.0.1:8081;
    }
}

3.开放访问端口 8080 8081 9001,否则访问不到

4.重启nginx,测试

学习nginx基础知识

学习nginx基础知识

五.负载均衡实现案例

1.实现效果

浏览器地址中输入一个地址http://192.168.17.129/edu/a.html,负载均衡效果,平均分配到8080和8081端口中

2.准备工作

1.部署tomcat 8080,部署tomcat 8081

2.在两台tomcat里面webapps目录中,创建名称为edu文件夹,在文件夹里面创建两个页面a.html,用于测试

3.在nginx的配置文件里做出相应的配置,在http下做配置

upstreat myserver{
    //添加服务器名
    server 192.168.17.129;8080;
    server 192.168.17.129;8081;
}

学习nginx基础知识

然后再servers和Locationa下做配置

server_name  192.168.17.129:
location /{
    proxy_pass http://myserver;
}

学习nginx基础知识

5.1nginx负载均衡的策略

  • 轮询(默认)

每个请求按时间顺序注意分配的不同的后端服务器,如果后端服务器宕机,就能自动剔除

  • weight

weight代表权重,默认为1,权重越高分配的客户端越多

使用:

upstreat myserver{
    //添加服务器名
    server 192.168.17.129;8080 weight =10;
    server 192.168.17.129;8081  weight = 20;
}
  • ip_hash

​ 每个请求按访问IP的hash结果分配,这样后续就可固定 访问一个后端服务器

  • fair

根据响应时间来进行分配,响应时间的长短来分配

upstreat myserver{
    //添加服务器名
    server 192.168.17.129;8080 ;
    server 192.168.17.129;8081;
    fair;
}

六、nginx动静分离

6.1、实现过程

通过location指定不同的后缀实现不同的请求转发。通过expires参数的配置,可以设定一个浏览器缓存过期时间,减少与服务器之间的请求和流量。

6.2、案例

1.准备静态资源

2.具体的配置

  • 1.在nginx配置文件中配置 nginx/conf

学习nginx基础知识

  • 2.输入网址进行访问

七、Nginx配置高可用

7.1 什么是Nginx的高可用?

学习nginx基础知识

由图可知,对于之前操作模式来说,只有一台nginx时,将用户的请求通过nginx进行转发到不同的tomcat之中,当其中的nginx宕机时,就会造成服务的转发失败,因此通过搭建nginx集群,当主服务器nginx宕机时,备份服务器的ngnix会将用户的请求重新转发tomcat中,从而保证了高可用。

7.2、nginx配置高可用准备

  • 准备两台服务器 192.168.17.129 和 192.268.17.131
  • 两台服务器都安装nginx
  • 配置一个虚拟地址
  • 在两台服务器安装keepalived 直接通过yum安装
yum install keepalive -y

7.3、高可用配置

完成keepalive的配置,找到keeplive配置文件keepalive.conf

(1)修改/etc/keepalived/keepalivec.conf 配置文件

global_defs {
	notification_email {
	acassen@firewall.loc
	failover@firewall.loc
	sysadmin@firewall.loc
	}
	notification_email_from Alexandre.Cassen@firewall.loc
	smtp_server 192.168.17.129
	smtp_connect_timeout 30
	router_id LVS_DEVEL
}

vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2 #(检测脚本执行的间隔)
	weight 2
}

vrrp_instance VI_1 {
	state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
	interface ens33 //网卡
	virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
	priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
		192.168.17.50 // VRRP H 虚拟地址
	}
}

(2)在/usr/local/src 添加检测脚本

A=`ps -C nginx ? no-header |wc -l`
if [ $A -eq 0 ];then
	/usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
		killall keepalived
	fi
fi

(3)把两台服务器上 nginx 和 keepalived 启动
启动 nginx: ./nginx
启动 keepalived: systemctl start keepalived.service

7.4、测试

1).在浏览器地址输入虚拟ip地址:192.168.17.50

既可以直接访问

2)当把主服务器nginx和keepalived停止,在次输入虚拟地址的时候,页面依旧可以访问

八、nginx工作原理

master & worker

学习nginx基础知识

8.1、一个 master 和多个 woker 有好处

  • 对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多,可以使用 nginx ?s reload 热部署,利用 nginx 进行热部署操作
  • 每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断。

8.2 、设置多少个 woker 合适

  • worker 数和服务器的 cpu 数相等是最为适宜的。(比如说: 你的电脑是4核,设置4个worker就足矣,如果是八核,设置8个worker足矣)

8.3、连接数 worker_connection

第一个:发送请求,占用了 woker 的几个连接数?
答案: 2 或者 4 个
第二个: nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?

  • 普通的静态访问最大并发数是: worker_connections * worker_processes /2,
  • 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *worker_processes/4。

到此这篇关于学习nginx基础知识的文章就介绍到这了,更多相关nginx基础内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
nginx常用命令放入shell脚本详解
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
nginx.conf配置文件结构小结
Apr 08 Servers
openstack云计算keystone组件工作介绍
Apr 20 Servers
Nginx 常用配置
May 15 Servers
使用Nginx+Tomcat实现负载均衡的全过程
May 30 Servers
超越Nginx的Web服务器caddy优雅用法
Jun 21 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
Nginx location 和 proxy_pass路径配置问题小结
Sep 04 #Servers
Nginx使用Lua模块实现WAF的原理解析
Nginx部署vue项目和配置代理的问题解析
centos8安装nginx1.9.1的详细过程
Aug 02 #Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 #Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 #Servers
nginx服务器的下载安装与使用详解
Aug 02 #Servers
You might like
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
python编写的最短路径算法
2015/03/25 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
python生成器推导式用法简单示例
2019/10/08 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
用python写PDF转换器的实现
2020/10/29 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
护士长竞聘书
2014/03/31 职场文书
村党支部换届选举方案
2014/05/02 职场文书
建国大业观后感600字
2015/06/01 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS