Nginx介绍反向代理和负载均衡 - 努力-

news/2025/12/4 11:49:58/文章来源:https://www.cnblogs.com/kongsq/p/19306261

一、 Nginx介绍

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

官网:https://nginx.org/

二、Nginx下载和安装

2.1 下载

在Nginx的官网的下载页面中(http://nginx.org/en/download.html),就展示了当前Nginx版本,并提供了下载的连接。 如下:

ng1-1

2.2 安装

step1. 安装依赖包

由于nginx是基于c语言开发的,所以需要安装c语言的编译环境,及正则表达式库等第三方依赖库。

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

step2. 下载Nginx安装包

yum install wget
wget https://nginx.org/download/nginx-1.16.1.tar.gz

执行完wget指令后,就会在当前所在目录看到下载下来的文件。

wget :

​ wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。

step3. 解压nginx压缩包

tar -zxvf nginx-1.16.1.tar.gz

step4. 配置Nginx编译环境

​ --prefix 指定的目录,就是我们安装Nginx的目录。

cd nginx-1.16.1
./configure --prefix=/usr/local/nginx

step5. 编译&安装

make & make install

三、 Nginx目录结构

安装完Nginx后,我们可以切换到Nginx的安装目录(/usr/local/nginx),先来熟悉一下Nginx的目录结构,如下图:

ng1-2

重点目录和文件如下:

目录/文件 说明 备注
conf 配置文件的存放目录
conf/nginx.conf Nginx的核心配置文件 conf下有很多nginx的配置文件,我们主要操作这个核心配置文件
html 存放静态资源(html, css, ) 部署到Nginx的静态资源都可以放在html目录中
logs 存放nginx日志(访问日志、错误日志等)
sbin/nginx 二进制文件,用于启动、停止Nginx服务

四、 Nginx-常用命令

Nginx中,我们的二进制可执行文件(nginx)存放在sbin目录下,虽然只有一个可执行文件,但是我们可以通过该指令配合不同的参数达到更加强大的功能。接下来,我们看下Nginx常见指令, 在执行下面的指令时,都需要在/usr/local/nginx/sbin/目录下执行。

(1). 查看版本

./nginx -v

(2). 检查配置文件

修改了nginx.conf核心配置文件之后,在启动Nginx服务之前,可以先检查一下conf/nginx.conf文件配置的是否有错误,命令如下:

./nginx -t

(3). 启动

./nginx

启动之后,我们可以通过ps -ef指令来查看nginx的进程是否存在。注意: nginx服务启动后,默认就会有两个进程。

启动之后,我们可以直接访问Nginx的80端口, http://192.168.200.200

ng1-3

注意:

​要想正常访问Nginx,需要关闭防火墙或开放指定端口号,执行的指令如下:

A. 关闭防火墙

 ​		systemctl stop firewalld

​ B. 开放80端口

		firewall-cmd --zone=public --add-port=80/tcp --permanent​		firewall-cmd --reload

(4). 停止

./nginx -s stop

停止之后,我们可以查看nginx的进程:

ps -ef|grep nginx

(5). 重新加载

当修改了Nginx配置文件后,需要重新加载才能生效,可以使用下面命令重新加载配置文件:

./nginx -s reload

五、nginx 配置文件结构

nginx的配置文件(conf/nginx.conf)整体上分为三部分: 全局块、events块、http块。这三块的分别配置什么样的信息呢,看下表:

区域 职责
全局块 配置和nginx运行相关的全局配置
events块 配置和网络连接相关的配置
http块 配置代理、缓存、日志记录、虚拟主机等配置

具体结构图如下:

ng1-4

在全局块、events块以及http块中,我们经常配置的是http块。在http块中可以包含多个server块,每个server块可以配置多个location块。

六、Nginx部署静态资源

Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。

相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。

将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。

server {listen 80;				#监听端口	server_name localhost;	#服务器名称location / {			#匹配客户端请求urlroot html;			#指定静态资源根目录index index.html;	#指定默认首页}
}

七、 Nginx反向代理

7.1 概念介绍

1). 正向代理

正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。

正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

图片...

2). 反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定,对于用户来说,访问反向代理服务器是完全无感知的。

ng1-6

7.2 Nginx反向代理

在nginx中,我们可以在nginx.conf中配置反向代理:

server {listen 82;server_name localhost;location / {proxy_pass http://192.168.200.201:8080; 	#反向代理配置,将请求转发到指定服务}
}

上述配置的含义为: 当我们访问nginx的82端口时,根据反向代理配置,会将请求转发到 http://192.168.200.201:8080 对应的服务上。

八、 Nginx负载均衡

8.1 负载均衡概念介绍

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着业务的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。

应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据。

负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

ng1-7

此处的负载均衡器,我们将会使用Nginx来实现,而Nginx的负载均衡是基于反向代理的,只不过此时所代理的服务器不是一台,而是多台。

8.2 Nginx负载均衡测试

在nginx中配置负载均衡

打开nginx的配置文件nginx.conf并增加如下配置:

#upstream指令可以定义一组服务器
upstream targetserver{	server 192.168.200.201:8080;server 192.168.200.201:8081;
}server {listen       8080;server_name  localhost;location / {proxy_pass http://targetserver;}
}

8.3 Nginx负载均衡策略

除了上述默认的轮询策略以外,在Nginx中还提供了其他的负载均衡策略,如下:

名称 说明 特点
轮询 默认方式
weight 权重方式 根据权重分发请求,权重大的分配到请求的概率大
ip_hash 依据ip分配方式 根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上
least_conn 依据最少连接方式 哪个服务器当前处理的连接少, 请求优先转发到这台服务器
url_hash 依据url分配方式 根据客户端请求url的hash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上
fair 依据响应时间方式 优先把请求分发给处理请求时间短的服务器

权重的配置:

#upstream指令可以定义一组服务器
upstream targetserver{	server 192.168.200.201:8080 weight=10;server 192.168.200.201:8081 weight=5;
}

上述配置的weight权重是相对的,在上述的配置中,效果就是,在大数据量的请求下,最终8080接收的请求数是8081的两倍。

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

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

相关文章

【2025最新版】傲游浏览器下载安装及使用教程(资源嗅探/云同步/密码大师完整指南)

本篇文章详细介绍了 傲游浏览器(Maxthon Browser) 的下载安装步骤、核心功能亮点以及适合的使用场景,包含 Win10/Win11 平台的图文教程与常见问题解决方法。文章中提供了浏览器安装包链接。无论是需要一个启动速度更…

2025年评价高的医药试剂底托泡沫包装/空调冰箱EPS结构件包装厂家最新热销排行

2025年评价高的医药试剂底托泡沫包装/空调冰箱EPS结构件包装厂家热销排行行业背景与市场趋势随着医药冷链物流和家电制造业的快速发展,高品质的泡沫包装材料需求持续增长。医药试剂底托泡沫包装需要具备优异的缓冲性、…

用 n8n 和 LangBot 打造跨平台 AI 聊天机器人

把 n8n 的可视化工作流与 LangBot 的多平台机器人框架结合起来,可以快速部署覆盖 QQ、微信、Discord、Telegram、Slack 等多个平台的 AI 聊天机器人,无需编写代码。本文教你几分钟内完成集成。 准备工作Python 3.11+ N…

redis下载

redis下载:https://download.redis.io/releases/

告别误判:基于n8n构建你的AI输出安全测试护盾

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 当你花费数周训练的AI模型在关键时刻输出不当内容,或是你精心搭建的聊天机器人突然说出令人尴尬的回复时,那种感觉就像精心准备的宴会上打…

Excel处理控件Aspose.Cells教程:使用C#在Excel中创建漏斗图

使用漏斗图可以更清晰地可视化转化率、销售渠道或任何层级数据集。本文将介绍如何使用 C# 和Aspose.Cells for .NET在 Excel 中创建漏斗图。只需几行代码,即可自动生成极具视觉冲击力的漏斗图,并可将其导出为 XLSX、…

读智能新物种03新物种

读智能新物种03新物种1. 新物种 1.1. 动物世界包含拥有各种各样才能的物种,其中许多动物的能力都超越了人类 1.2. 当谈到机器人和人工智能时,我们却关注着某些特殊的智能和技能,即我们自己所拥有的 1.3. 在思考人工…

差异冲突进化三定律:一篇AI元人文宣言

差异冲突进化三定律:一篇AI元人文宣言 我们宣告: 旧的价值范式已死。它死于对“同一”的迷梦,对“冲突”的恐惧,对“静态”的执着。 我们宣告: 文明系统的健康,不在于共识的广度,而在于容纳、转化并进化冲突的智…

2025出国留学中介哪家靠谱

2025出国留学中介哪家靠谱一、2025出国留学中介哪家靠谱作为从业十年的国际教育规划师,我经常被学生和家长问到一个核心问题:如何判断留学中介的可靠性?根据2025年1月发布的《中国留学服务行业发展趋势白皮书》,超…

2025成都出国留学中介哪家好哪个好

2025成都出国留学中介哪家好哪个好一、2025成都出国留学中介选择指南作为从业12年的国际教育规划师,我经常被成都的学生和家长询问如何选择留学中介。许多人在搜索引擎上高频搜索“成都留学中介排名”、“成都哪家留学…

2025北京留学中介机构排名

2025北京留学中介机构排名一、2025年北京留学中介机构排名常见问题解答 作为从业12年北京地区留学申请规划导师,我经常遇到学生和家长咨询如何选择留学中介。许多人在搜索引擎上提问:“北京哪家留学中介靠谱?”“2…

2025澳大利亚留学中介费一般收多少

2025澳大利亚留学中介费一般收多少一、2025年澳大利亚留学中介费一般收多少作为从事国际教育规划工作超过十年的专业人士,我经常被学生和家长问及澳大利亚留学中介的费用问题。根据2025年最新的行业数据,澳大利亚留学…

【2025最新版】暴雪战网下载安装教程:一步配置畅玩所有暴雪游戏

这篇2025最新版的暴雪战网下载安装教程,详细讲解Battle.net客户端的下载、安装、登录与配置流程,涵盖Windows与macOS两平台操作方法,并附常见问题解决和性能优化技巧,帮助玩家快速完成环境配置,畅玩《魔兽世界》《…

docker 一键安装脚本

docker 一键安装脚本Docker 离线安装包,助你轻松部署! 想体验 Docker 的便捷,却受限于网络环境? 我们为你提供 Docker 离线安装包,解决你的燃眉之急! 获取方式:关注我们的公众号 在公众号后台回复关键词:Dock…

2025年12月中国企业市场地位证明机构哪家比较好?合规赋能全场景,精准匹配高价值伙伴

2025 年《广告绝对化用语执法指南》深化落地背景下,企业市场地位合规认证已从 “可选动作” 升级为 “核心刚需”。当前国内市场地位证明机构数量超 120 家,但仅 60% 具备完整合规资质,35% 的企业曾因认证报告资质不…

烟台英格索兰空压机安装维保及节能改造企业推荐

一、行业背景与趋势 随着“双碳”目标的深入推进,工业领域节能降耗需求持续升级。空压机作为工业能耗大户,其能效优化与系统改造成为企业绿色转型的关键环节。英格索兰作为全球的压缩空气解决方案供应商,近年来通过…

vscode内存过大

vscode内存过大VSCode 内存占用过高通常由扩展插件、文件索引、缓存积累等因素导致,可通过禁用非必要扩展、清理缓存、优化设置等方式有效降低内存使用。‌‌ 1‌‌ 2 内存占用高的主要原因 ‌扩展插件负担‌:语言服…

2025年12月幽门螺旋杆菌产品排行榜:科学防控+权威测评TOP5,避坑指南全解析

随着国人对幽门螺旋杆菌(Hp)感染危害的认知不断加深,抗幽相关产品市场持续火热。据《2025 年中国幽门螺旋杆菌体外检测产品行业报告》显示,2024 年国内该类产品市场规模已达 19.3 亿元,2025 年预计将增长至 22.1 …

strcpystrncpy

好的,我们来详细讲解C语言中这两个非常重要且容易混淆的字符串复制函数。 1. strcpy - 字符串复制函数 基本定义 #include <string.h> char *strcpy(char *dest, const char *src);功能说明将src指向的字符串(…

免费毕业论文工具推荐:6款AI神器助力高效完成论文写作(附真实文献引用与查重优化)

12月校园里弥漫着毕业论文的紧张气息,作者深受选题、文献查找、导师意见、格式和查重等问题困扰,一度想放弃。后来了解到AI写作工具,经摸索尝试,为大家整理6款实测靠谱的工具,包括鲲鹏智写、瑞达写作、PaperFine等…