学习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
Nginx优化服务之网页压缩的实现方法
Mar 31 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
详解nginx location指令
Jan 18 Servers
CKAD认证中部署k8s并配置Calico插件
Mar 31 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
KVM基础命令详解
Apr 30 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
nginx代理实现静态资源访问的示例代码
Jul 07 Servers
Valheim服务器 Mod修改安装教程 【ValheimPlus】
Dec 24 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生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
JS实现轮播图效果
2020/01/11 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
js实现验证码功能
2020/07/24 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
django接入新浪微博OAuth的方法
2015/06/29 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
django使用LDAP验证的方法示例
2018/12/10 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
如何在python中写hive脚本
2019/11/08 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
机电一体化自荐信
2013/12/10 职场文书
广告业务员岗位职责
2014/02/06 职场文书
新品发布会主持词
2014/04/02 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
文艺节目主持词
2015/07/06 职场文书
Python中的程序流程控制语句
2022/02/24 Python
详解Go语言中Get/Post请求测试
2022/06/01 Golang