Nginx方向代理和负载均衡配置

1. Nginx介绍

2.Nginx常用命令

cd /usr/local/nginx/sbin/
./nginx  启动
./nginx -s stop  停止
./nginx -s quit  安全退出
./nginx -s reload  重新加载配置文件  如果我们修改了配置文件,就需要重新加载。
ps aux|grep nginx  查看nginx进程

3.nginx配置文件

3.1 基础配置

# 主进程叫master,负责管理子进程,子进程叫worker
# worker_processes配置项表示开启几个业务进程,一般和cpu核数有关
worker_processes  1;events {worker_connections  1024;
}http {# include表示可以引入其他文件,此处表示引入http mime类型include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;# 虚拟主机,可以配置多个server {listen       80;server_name  localhost;location / {# 路径匹配之后,哪个目录下去匹配相应的网页,html是相对路径root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

3.1.1 第一部分:全局块

主要会设置一些影响Nginx服务器整体运行的配置指令,主要包括:配置运行Nginx服务器的用户(组)、允许生成的 worker process 数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。
worker_processes 1;
上面这行 worker_processes 配置,是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的约束。

3.1.2 第二部分:events块

events 块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等
worker_connections 1024;
上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。

3.1.3 第三部分:http全局块(主要配置的模块)

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置

http 全局块:http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块:这块和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。而每个server块也分为全局server块,以及可以同时包含多个locaton块。

3.1.3.1 全局 server 块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。

3.1.3.2 location 块

一个 server 块可以配置多个 location 块。
基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

4. 实操

4.1反向代理

4.1.1 跳转

实现效果:使用 Nginx 反向代理,访问192.168.68.130直接跳转到127.0.0.1:8080和127.0.0.1:7070

server {listen       80;server_name  192.168.68.130;location / {root   html;index  index.html index.htm;proxy_pass  http://127.0.0.1:8080}location ~ /edu/ {proxy_pass  http://127.0.0.1:7070}
}

监听192.168.68.130:80,匹配所有到http://127.0.0.1:8080
监听192.168.68.130:80/edu,匹配所有到http://127.0.0.1:7070

location 指令说明
该指令用于匹配 URL, 语法如下:

location [ = | ~ | ~* | ^~] uri {}

= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求
~:用于表示 uri 包含正则表达式,并且区分大小写
~*:用于表示 uri 包含正则表达式,并且不区分大小写
^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求。字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location块中的正则 uri 和请求字符串做匹配。

4.2负载均衡

4.2.1 轮询

	# 反向代理配置upstream server_list{# 这个是tomcat的访问路径server localhost:8080;server localhost:7070;}server {listen       80;server_name  localhost;location / {root   html;proxy_pass http://server_list;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

监听localhost:80,分发到server localhost:8080和server localhost:7070;默认使用轮询策略

4.2.1 weight 权重

weight 代表权重,默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

# 反向代理配置
upstream server_list{# 这个是tomcat的访问路径server localhost:8080 weight=5;server localhost:7070 weight=1;
}

4.2.2 ip_hash

每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题.不管刷新多少遍,始终访问的是同一台tomcat服务器

upstream backserver { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:7070; 
}

4.2.3 最少连接

web请求会被转发到连接数最少的服务器上

upstream backserver { least_conn;server 127.0.0.1:8080; server 127.0.0.1:7070; 
}	

5. 容易搞混的配置

5.1 root和alias

使用root,实际的路径就是:root值 + location值。
使用alias,实际的路径就是:alias值。

例如,
有一张图片,URL是:www.123.com/static/a.jpg
它在服务器的路径是:/var/www/app/static/a.jpg
那么用root的配置是:

location /static/ {root /var/www/app/;
}

用alias的配置就是:

location /static/ {alias /var/www/app/static/;
}

对于alias,location值可以随便取,例如:

location /hello/ {alias /var/www/app/static/;
}

这样,我们访问图片的地址就是:www.123.com/hello/a.jpg

5.2 try_files

try_files /4.html /5.html @qwe; #检测文件4.html和5.html,如果存在正常显示,不存在就去查找@qwe值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录解决duboo注册问题和投诉问题

最近项目组遇到运维一个投诉:我们的dubbo服务是以接口维度注册到nacos上的,再高峰期无法下线服务维度导致运维风险增加。针对这个问题,我查了下,确实是这样的,因为我们使用的dubbo是3.0以下的,所以注册到注…

Vue2中v-for 与 v-if 的优先级

在Vue2中,v-for 和 v-if 是常用的指令,它们在前端开发中非常有用。但是,当我们在同一个元素上同时使用这两个指令时,就需要注意它们的优先级关系了。 首先,让我们了解一下v-for和v-if的基本用法。 v-for 是Vue的内置…

问题:必须坚持以中国式现代化推进中华民族伟大复兴,既不走封闭僵化的老路,也不走 #媒体#知识分享

问题:必须坚持以中国式现代化推进中华民族伟大复兴,既不走封闭僵化的老路,也不走 A、中国特色社会主义道路 B、改革开放之路 C、改旗易帜的邪路 D、中国式现代化之路 参考答案如图所示

2024年GPT如何发展?

2023 年,人工智能领域最具影响的莫过于 GPT-4、ChatGPT 了。 ChatGPT 凭一己之力掀起了 AI 领域的热潮,火爆全球,似乎开启了第四次工业革命。 ChatGPT 入选《Nature》2023 年度十大人物(Nature’s 10),这…

Git详细讲解

文章目录 一、Git相关概念二、本地分支中文件的添加 、提交2.1 文件状态2.2 创建Git仓库2.2.1 git init2.2.2 git clone 2.3 添加操作(git add)2.4 提交操作(git commit)2.5 撤销操作2.5.1 撤销 add操作2.5.2 撤销 commit操作2.5.3 覆盖上一次的commit操…

极智一周 | 国产CPU系列汇总、鲲鹏、飞腾、平头哥 And so on

欢迎关注我的公众号 [极智视界],获取我的更多技术分享 大家好,我是极智视界,带来本周的 [极智一周],关键词:国产CPU系列汇总、鲲鹏、飞腾、平头哥 And so on。 邀您加入我的知识星球「极智视界」,星球目前…

【开源】JAVA+Vue.js实现社区买菜系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 数据中心模块2.1.2 菜品分类模块2.1.3 菜品档案模块2.1.4 菜品订单模块2.1.5 菜品收藏模块2.1.6 收货地址模块 2.2 可行性分析2.3 用例分析2.4 实体类设计2.4.1 菜品分类模块2.4.2 菜品档案模块2.4.3…

哈希表(Hash Table)-----运用实例【通过哈希表来管理雇员信息】(java详解) (✧∇✧)

目录 一.哈希表简介: 实例介绍: 类的创建与说明: 各功能图示: 1.class HashTab{ }; 2. class EmpLinkedList{ }; 3. class Emp{ }; 4.测试: 运行结果: 最后,完整…

关于数字图像处理考试

我们学校这门科目是半学期就完结哦,同学们学习的时候要注意时间哦。 选择题不用管,到时候会有各种版本的复习资料的。 以下这些东西可能会是大题的重点: 我根据平时代码总结的,供参考 基本操作: 1.读图:…

【LeetCode】37. 解数独(困难)——代码随想录算法训练营Day30

题目链接:37. 解数独 题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&…

机器学习——有监督学习和无监督学习

有监督学习 简单来说,就是人教会计算机学会做一件事。 给算法一个数据集,其中数据集中包含了正确答案,根据这个数据集,可以对额外的数据希望得到一个正确判断(详见下面的例子) 回归问题 例如现在有一个…

linux系统非关系型数据库redis主从模式

redis主从模式 主从模式主从同步原理部署主从同步redis5.0.0之前的版本配置redis5.0.0之后的配置测试主从 主从模式 主从同步原理 主从 – 同步原理 从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门…

【深度学习:Bard】我们 AI 之旅的重要下一步

【深度学习:AI 之旅】我们 AI 之旅的重要下一步 Bard简介将 AI 的优势带入我们的日常产品中帮助开发人员利用 AI 进行创新大胆负责 人工智能是我们今天正在研究的最深刻的技术。无论是帮助医生更早地发现疾病,还是使人们能够用自己的语言获取信息&#x…

深度学习中的Droupout

1. 什么是Droupout Dropout的作用是防止过拟合。 Dropout在训练模型中是如何实现的呢?Dropout的做法是在训练过程中按一定比例(比例参数可设置)随机忽略或屏蔽一些神经元。这些神经元被随机“抛弃”,也就是说它们在正向传播过程…

【C/C++】整数及乘积的溢出问题

文章目录 一、为什么会溢出?二、怎样解决?三、看个例题四、补充:scanf和cin的区别 一、为什么会溢出? 整数乘积的溢出问题是指两个整数相乘得到的结果超过了所能表示的数据类型的范围。 在计算机中,整数的表示是有限…

移动应用开发Android 创建第一个Android项目

文章目录 一、创建第一个Android项目1.1 准备好Android Studio1.2 运行程序1.3 程序结构是什么app下的结构res - 子目录(所有图片、布局、字AndroidManifest.xml 有四大组件,程序添加权限声明 Project下的结构 二、开发android时,部分库下载异…

Spinnaker多云持续交付平台: 部署Minio存储服务

目录 一、实验 1.环境 2.K8S storage节点部署NFS 3.K8S 动态创建PV 4.K8S master节点部署HELM3 4.K8S master节点部署Minio存储服务(第一种方式安装) 5.Minio客户端安装MC命令 6.K8S master节点使用Docker 部署Minio存储服务(第二种方…

FPS游戏框架漫谈第二十天

今天我们聊的话题是: 《吃鸡中武器护甲逻辑》 当我们接到一个需求就是给我们游戏中的特定的模式指定的武器支持加护甲的功能 那么这个流程是什么样的呢? 第一步一般这个新增护甲的配置属性肯定是加载武器的Config json文件里面的呢,并且是支持…

Ubuntu 1804 And Above Coredump Settings

查看 coredump 是否开启 # 查询, 0 未开启, unlimited 开启 xiaoUbuntu:/var/core$ ulimit -c 0# 开启 xiaoUbuntu:/var/core$ ulimit -c unlimited查看 coredump 保存路径 默认情况下,Ubuntu 使用 apport 服务处理 coredump 文件&#xff…

华为配置车地通信快速切换实验

配置车地通信快速切换示例 组网图形 图1 配置车地通信快速切换业务示意图 组网需求配置思路配置注意事项操作步骤配置文件 组网需求 某轨交企业为了降低网络部署成本,提升服务质量,希望通过WLAN技术实现车地通信,使部署在地面网络的组播服务器…