学习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 根据URL带的参数转发的实现
Apr 01 Servers
Nginx工作原理和优化总结。
Apr 02 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
Nginx+Tomcat负载均衡集群的实现示例
Oct 24 Servers
nginx lua 操作 mysql
May 15 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
nginx访问报403错误的几种情况详解
Jul 23 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
Aug 14 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 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
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
解析php中curl_multi的应用
2013/07/17 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
python 提取文件的小程序
2009/07/29 Python
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python实现ip地址的包含关系判断
2020/02/07 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
性能服装:HYLETE
2018/08/14 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
大学军训自我鉴定
2013/12/15 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
单位单身证明范本
2014/01/11 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
卖车协议书
2014/04/21 职场文书
校园元旦活动总结
2014/07/09 职场文书
信用卡催款律师函
2015/05/27 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL