Nginx反向代理和负载均衡

文章目录


前言

比如公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。

但是慢慢的,使用该公司平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

于是该公司横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。


一、Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

二、Nginx的作用

1.正向代理

2.反向代理

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略

3.负载均衡之轮询

4.负载均衡之加权轮询

iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

三、Nginx安装

1.Nginx下载

博主使用的是windows,所以就以windows为例进行安装

Nginx下载地址:http://nginx.org/en/download.html

下载之后直接解压即可:

2.启动Nginx

博主这里选择直接双击nginx.exe启动,之后会出现一个黑色弹窗,但也就一闪而过。

3.检查Nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

4.配置监听

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

5.关闭nginx

如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

taskkill是用来终止进程的,

/f是强制终止 .

/t终止指定的进程和任何由此启动的子进程。

/im示指定的进程名称 .

相关推荐
享受 生活12 分钟前
【docker】docker desktop 在windows上支持 host模式
运维·docker·容器
小安运维日记18 分钟前
CKA认证 | Day8 K8s安全
运维·云原生·容器·kubernetes·云计算
WTT001125 分钟前
CTFshow-SSRF&文件上传
大数据·运维·网络·安全·web安全·ctf
观测云39 分钟前
Docker Container 可观测性最佳实践
运维·docker·容器
心灵彼岸-诗和远方1 小时前
DevOps工程技术价值流:Ansible自动化与Semaphore集成
linux·运维·网络·软件工程·devops
思码逸研发效能1 小时前
在 DevOps 中,如何应对技术债务和系统复杂性,以确保可持续的研发效能和创新?
运维·算法·研发效能·devops·研发效能度量·效能度量
爱写代码的小白.1 小时前
RustDesk内置ID服务器,Key教程
linux·运维·服务器
wq54wq1 小时前
智能流程管理:CRM系统助力订单与回款自动化
运维·自动化
朝九晚五ฺ1 小时前
【Linux探索学习】第二十四弹——软硬链接:Linux 中的软链接与硬链接详解
linux·运维·chrome·学习
上海运维Q先生2 小时前
面试题整理19----Metric的几种类型?分别是什么?
运维·服务器·面试