学习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网站服务如何配置防盗链(推荐)
Mar 31 Servers
fastdfs+nginx集群搭建的实现
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
Nginx四层负载均衡的配置指南
Jun 11 Servers
Windows下用Nginx配置https服务器及反向代理的问题
Sep 25 Servers
Nginx 反向代理解决跨域问题多种情况分析
Jan 18 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
Nginx 常用配置
May 15 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
win sever 2022如何占用操作主机角色
Jun 25 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 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 归并排序 数组交集
2011/05/10 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
js使用心得分享
2015/01/13 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
在react中使用vuex的示例代码
2018/07/30 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
python操作docx写入内容,并控制文本的字体颜色
2020/02/13 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
会计应聘求职信范文
2013/12/17 职场文书
前台文员岗位职责
2013/12/28 职场文书
廉政教育心得体会
2014/01/01 职场文书
承诺书怎么写
2014/03/26 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
教你用python实现12306余票查询
2021/06/30 Python
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python