学习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+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
解析在浏览器地址栏输入一个URL后发生了什么
Jun 21 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
Nginx虚拟主机的搭建的实现步骤
Jan 18 Servers
Shell脚本一键安装Nginx服务自定义Nginx版本
Mar 20 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
超越Nginx的Web服务器caddy优雅用法
Jun 21 Servers
Nginx如何配置根据路径转发详解
Jul 23 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
重新认识php array_merge函数
2014/08/31 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python assert的用处示例详解
2019/04/01 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
介绍一下XMLHttpRequest对象
2012/02/12 面试题
《口技》教学反思
2014/02/21 职场文书
学校安全生产承诺书
2014/05/23 职场文书
体育专业自荐书
2014/05/29 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
2014年药店工作总结
2014/11/20 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android