Nginx超详细入门教程

2023-11-13

目录

一、nginx配置文件介绍

二、nginx的核心功能

 1)反向代理

<1>正向代理

<2>反向代理

<3>准备工作

 2)负载均衡

3)负载均衡策略

4)动静分离

三、Nginx的高可用性

1)准备两台虚拟机并都安装nginx

2)需要在每一个nginx服务器上安装keepalived

3)修改keepalived的配置文件内容

 4)将 nginx_check.sh脚本文件放入/usr/local/src下

5)分别启动keepalived

6)访问虚拟ip

7)关闭主节点nginx并再次访问


一、nginx配置文件介绍

1)首先进入你自己的nginx安装的目录下找到nginx.conf文件并进入

2)进入nginx.conf文件后(vi nginx.conf),我们可以看到如下内容:

 3)自定义一个server

注意:修改了nginx配置文件,必须重新加载配置文件

./nginx -s reload

一个nginx可以对应多个server

4) 创建一个目录main并在该目录下创建一个main.html

 访问81端口:

(如果访问失败看是否放行了81端口)

二、nginx的核心功能

 1)反向代理

下面我们用借钱的例子来讲解一下正、反向代理。

<1>正向代理

拿借钱打个比方,A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的。

我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。

<2>反向代理

还用借钱的例子,A想向C借钱,然后C借给他了,但是实际上这个钱可能C向B借的~至于钱到底是谁的,A是不知道的。这里的C扮演着一个反向代理的角色,客户不知道真正提供服务的人是谁。

反向代理隐藏了真实的服务端,对于客户来说不知道访问的是哪台服务器。

<3>准备工作

1、准备一台真实服务器----tomcat项目。----把一个springboot项目并放入linux服务器系统中。

 2、运行springboot项目

java -jar springboot01-demo01.jar

  

3、配置nginx来代理上面springboot真实项目服务

 记得重新加载nginx配置文件:

sbin目录下(./nginx  -s reload

放行端口号:firewall-cmd --add-port=82/tcp --zone=public --permanent

重启防火墙:systemctl restart firewall

4、浏览器访问nginx

 2)负载均衡

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

负载均衡通常配合nginx一起使用

准备两台真实服务器:

nginx重新加载配置文件。

3)负载均衡策略

  • 轮询策略。
  • 权重策略。
  • ip_hash策略。
  • 第三方插件。 

(1)轮询策略(默认使用)

(2)权重策略:----适合服务器的配置不同,被访问的频率不同。

(3)ip_hash策略: ----根据客户端的ip分配相应真实服务器。  

(4)第三方插件:(大多数付费) 

4)动静分离

把静态资源【css,js,img】交于nginx来处理,而动态资源【接口,jsp】还是有真实服务器处理。

好处: 当修改静态资源时,无需对每个真实服务器的静态资源做修改,只需要修改nginx一处的静态资源

创建一个springboot项目

 

配置nginx进行代理:

 在nginx中新建static文件夹将静态资源放入,并运行jar包进行访问。

三、Nginx的高可用性

思考:

1)nginx如果出现问题该怎么办?---------提高 高可用性

2)当主节点宕机后,如何让客户访问到从节点?-------虚拟一个ip,客户只需访问虚拟ip即可

3)如何让主节点和从节点之间能够切换?------使用keepalived组件来解决上面的问题,它会自动监控主从的状态,并可以帮nginx虚拟ip,还可在主从之间切换。

下面进入准备工作:

1)准备两台虚拟机并都安装nginx,192.168.232.166 192.168.232.167

2)需要在每一个nginx服务器上安装keepalived

yum install keepalived 安装keepalived

rmp -q -a keepalived 检查是否安装keepalived

默认安装路径:/etc/keepalived

3)修改keepalived的配置文件内容

将/etc/keepalived下的配置文件内容替换为下面的内容并进行修改:

global_defs {
	notification_email {
	  acassen@firewall.loc
	  failover@firewall.loc
	  sysadmin@firewall.loc
	}
	notification_email_from Alexandre.Cassen@firewall.loc
	smtp_ server 192.168.232.166
	smtp_connect_timeout 30
	router_id 192.168.232.166
}

vrrp_script chk_http_port {
	script "/usr/local/src/nginx_check.sh"
	interval 2
	weight -20
}

vrrp_instance VI_1 {
	state MASTER
	interface ens33
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth type PASS
		auth pass 1111
        }
	virtual_ipaddress { 
		192.168.232.50
	}
	#将 track_script 块加入 instance 配置块
	track_script {
	chk_http_port #执行 Nginx 监控服务
	}
}

 

 4)将 nginx_check.sh脚本文件放入/usr/local/src下:

#!/bin/bash
# 检查是否开启nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
        systemctl stop keepalived
fi

两台虚拟机都要进行以上操作。

5)分别启动keepalived

systemctl start keepalived.service

并将两台nginx都开启:在其sbin目录下./nginx

6)访问虚拟ip

7)关闭主节点nginx并再次访问

/usr/soft/nginx/sbin/nginx -s stop 关闭nginx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx超详细入门教程 的相关文章

随机推荐

  • JavaScript undeclared 与 undefined 的区别

    undefined 声明了变量 但是没有赋值 undeclared 没有声明变量就直接使用 如上图 num 就是undefined arr 则是 undeclared
  • 蓝桥杯Python初级测试题之省赛题1

    蓝桥杯Python初级测试题之省赛题1 1 统计成绩及格率和优秀率 题目描述 小L给学生们组织了一场考试 卷面总分为 100 分 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 则称为及格 如果得分至少为 85 分
  • C++实现矩阵乘法

    本贴分享用C 实现矩阵乘法计算的功能 具体内容请看代码和注释 这里单独说一明一部分代码块 1 采用vector lt vector
  • 【操作系统】王道考研 笔记总结目录(完结)

    写在前面 视频链接 是为了期末考和以后就业的笔记 第一章 操作系统 王道考研 p1 操作系统的概念 功能和目标 操作系统 王道考研 p2 操作系统的四个特征 操作系统 王道考研 p3 操作系统的发展与分类 操作系统 王道考研 p4 操作系统
  • Ruby简介 完全面对象 脚本 从人的角度编程(强大反射)

    Ruby 一种为简单快捷面向对象编程而创的脚本语言 在20世纪90年代由日本人松本行弘开发 遵守GPL协议和Ruby License 1 它的灵感与特性来自于Perl Smalltalk Eiffel Ada以及Lisp语言 由Ruby语言
  • 启动IDEA发现我的项目模块/代码没了

    依次点击 文件 项目结构 模块 导入模块
  • 【C++】基本数据类型

    C 基本数据类型是程序中最基本的数据类型 它们是构建复杂数据类型的基础 C 中的基本数据类型包括整型 浮点型 字符型和布尔型等 目录 基本数据类型 整型 浮点型 字符型 转义字符 字符串 布尔类型 sizeof 基本数据类型 整型 作用 用
  • 算法学习笔记——动态规划:不连续取值的前提下求最大总和

    LeetCode 198 打家劫舍 一排房屋 某房屋内的金额数为nums i 相邻房屋内的钱不能被同时取出 求最多能取出多少钱 nums 1 1 3 4 返回5 选择取出1 4 5 dp i 代表对于0 i号房屋 能取走的最大金额 依次考虑
  • python高级7.多任务--协程-迭代器

    迭代器 迭代是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问 直到所有的元素被访问完结束 迭代器只能往前不会后退 可迭代对象 iterable object 我们已经知道可以对list t
  • define()和defined()

    define 用来定义一个常量 define IN ADMIN true 定义一个IN ADMIN常量 defined 用来检测定义的常量是否存在 defined IN ADMIN 检测IN ADMIN是否存在 用处很大 比如你在一个页面上
  • 【数据库 Mysql查询系列】在sc表 中查询平均成绩高于75分的学生。

    和之前发的博文中涉及到的sc 表一样 本文不再展示表内容 直接上代码 select sno 学号 avg ifnull grade 0 平均成绩 from sc group by sno having avg ifnull grade 0
  • vue封装axios实现

    axios很多前端都应该是非常熟悉了 前端访问后端很多都是使用的它 今天我们使用vue来封装一个axios 首页我们新建一个request js文件并引入axios的依赖 import axios from axios 接着创建axios的
  • 熵的概念理解

    Author 修远 说明 本文为Datawhale下开源项目 李宏毅机器学习 决策树的补充内容 作者水平有限 还望学习者批评指正 Datawhale 学习目标 学习信息量计算 原理 学习信息熵 证明 0 H p
  • Pandas数据处理3:数据合并(join、merge),累计与分组(groupby)

    Pandas数据合并 join merge 累计与分组 groupby import pandas as pd import numpy as np def make df cols ind 一个简单的DataFrame data c st
  • 多维时序

    多维时序 MATLAB实现SCNGO CNN Attention多变量时间序列预测 目录 多维时序 MATLAB实现SCNGO CNN Attention多变量时间序列预测 预测效果 基本介绍 程序设计 参考资料 预测效果 基本介绍 1 S
  • Pretues和Keil使用stm32F103C6芯片实现跑马灯

    一 Protues创建工程 添加好名称 不断下一步就行 二 pretues添加原件 构建电路图 二 keil做代码 添加文件这里不做说明 注意一下几个点 1 芯片使用stm32F103c6 2 mdk的汇编文件随之改变 3 宏定义改成stm
  • 【NLP】使用 LSTM 和Beam Search进行文本自动完成

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 获取腾讯视频的视频url

    爬视频喽 1 获取链接地址 如下图 类似 https v qq com x page q0900ebm4qz html 2 取值 取上图获取到的加粗的数据 然后替换下面链接中的加粗数据http vv video qq com getinfo
  • 记一次python3 pip 报错Retrying

    错误信息如下 Retrying Retry total 4 connect None read None redirect None status None after connection broken by SSLError Can t
  • Nginx超详细入门教程

    目录 一 nginx配置文件介绍 二 nginx的核心功能 1 反向代理 lt 1 gt 正向代理 lt 2 gt 反向代理 lt 3 gt 准备工作 2 负载均衡 3 负载均衡策略 4 动静分离 三 Nginx的高可用性 1 准备两台虚拟