Nginx基本使用 反向代理与负载均衡

ops/2024/9/24 10:24:44/

什么是Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。

其特点是占有内存少,并发能力强,nginx的并发能力在同类型的网页服务器中表现较好,而且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。

Nginx作用

  • 反向代理:为服务器做代理,接收客户端的的请求,并将服务器的响应转发给客户端
  • 负载均衡:将负载合理地分配到各个服务器去处理
  • 动静分离:将网站的动态与静态资源分开(如前后端分离),可以对静态文件做缓存,提高响应速度

使用场景:

  • 一个项目存在于多台服务器,想要实现每一次用户请求都打在不同的服务器上,但又不想让用户感知到访问的是不同服务器

正向/反向代理

正向代理是指客户端通过代理服务器(如VPN)去接收和响应目标服务器的请求,代理的是客户端。用户对国外网站的访问就需要通过代理服务器来转发请求。

在这里插入图片描述

而反向代理就是服务器通过一个代理服务器去接受和返回客户端的请求,因为代理在是服务器端,所以叫反向代理。对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一样发送请求就可以了。

在这里插入图片描述

总结:正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器,为服务器收发请求,使真实服务器对客户端不可见。

负载均衡

负载就是工作量(或者流量),将总的流量按照一定策略分配到各个主机上去的过程就是负载均衡

反向代理实现的是:你访问一台服务器,它会转发给一台别的服务器;而负载均衡实现的是,你访问一台服务器,它会转发给多个服务器

中的一台,所以说负载均衡是基于反向代理的,只不过代理的是一群服务器。

在这里插入图片描述

动静分离

动静分离就是将前端的静态资源(html、css、JavaScript、图片等)与后端分开,或者说静态请求与动态请求分开,也就是实现前后端分离。

本质上就是以Nginx作为前端资源的服务器,后端正常用Tomcat作为服务器。访问前端静态资源时,直接通过Nginx所在服务器的文件系统找,访问后端动态资源时,才是通过tomcat所在服务器对应的接口去访问。

在这里插入图片描述

Nginx基本使用

启动

打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车

在这里插入图片描述

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

在这里插入图片描述

重载配置

nginx -t # 检查配置文件语法
nginx -s reload # 重新加载

关闭

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

Nginx配置

在conf文件夹中的nginx.conf是nginx的核心配置文件

注意:修改配置文件后不会立即生效,必须执行nginx -s reload才会生效

在这里插入图片描述

里面主要包括三块,分别是全局配置、事件配置和http配置,可以看到默认配置的nginx监听的端口为80

# 全局配置
#user  nobody;
worker_processes  1;# 事件配置
events {worker_connections  1024;
}# http配置
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;# sever配置server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {...}}

Nginx实践

有一个应用,在两个不同的服务器中运行(或者同一台服务器不同端口),先要求使用Niginx做反向代理,使得用户访问本机的80端口时会自动映射到对应的两个主机应用上(反向代理),并且配置主机1的访问频率是主机2的两倍(负载均衡)。

步骤

分别用7090和7091号端口启动一个hello world的应用,访问这里两个url的结果都是得到一个hello world

在这里插入图片描述

1.在http配置内加入myhost的配置

    # 配置myhost,负载均衡(默认是轮询策略)upstream myhost{server 127.0.0.1:7090 weight=2;server 127.0.0.1:7091 weight=1;}

2.再在80端口的sever中配置反向代理(代理上述定义的myhost),只需要添加一行proxy_pass即可

 # sever配置server {listen       80;server_name  localhost;location / {#配置反向代理,转到myhostproxy_pass http://myhost;}}

具体修改如下

在这里插入图片描述

cmd中进入nginx目录,输入nginx -s reload,重新加载配置文件

结果

此时,访问127.0.0.1或者localhost(默认是80端口),就会自动转到127.0.0.1:7090和127.0.0.1:7091了(实现反向代理),且访问两个程序的比例是1:2(实现负载均衡

在这里插入图片描述


http://www.ppmy.cn/ops/30696.html

相关文章

Linux开发板 FTP 服务器移植与搭建

VSFTPD(Very Secure FTP Daemon)是一个安全、稳定且快速的FTP服务器软件,广泛用于Unix和Linux操作系统。它以其轻量级、高效和易于配置而受到赞誉。VSFTPD不仅支持标准的FTP命令和操作,还提供了额外的安全特性,如匿名F…

【SpringBoot】Spring Boot自动配置概览

目录 背景自动装配/自动配置springboot是如何实现自动配置的核心注解AutoConfigurationImportSelector 类的继承体系Spring Boot 提供的条件注解示例注意版本 背景 没有 Spring Boot 的情况下,我们引入第三方依赖之后,需要手动配置。 比如需要手动将引入…

uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件

前言 因为公司需要开发一款APP,还是对接第三方的安卓系统,所以需要使用到jar包,同时还要自己开发安卓插件,让uniapp调用,本篇文章将0基础讲一下uniapp如何开发安卓插件和第三方jar包如何调用和编写一个语音播报(android.speech.tts.TextToSpeech)插件 操作步骤 1.要下载…

库函数strncpy的使用及其模拟实现

一、什么是strncpy strncpy是一个C语言标准库函数,用于将一个字符串的一部分复制到另一个字符串中。它的声明通常是这样的: char *strncpy(char *dest, const char *src, size_t n); 其中: dest为目标字符串;src为源字符串&am…

事件处理模式--reactor原理与实现

文章目录 reactorapicode reactor reactor是是服务器的重要模型, 是一种事件驱动的反应堆模式 通过epoll_create() 创建句柄, epoll_ctrl()提前注册好不同的事件处理函数 , 当事件到来就由 epoll_wait () 获取同时到来的多个事件,并且根据数据的不同类型将事件分发…

Linux / Ubuntu 备份数据

Linux / Ubuntu 备份数据 需要备份的文件tar 工具备份/打包过程恢复/解包过程 流程自动化start_backup.shserver_backup.sh 同步发布在个人笔记Linux / Ubuntu 备份数据 需要备份的文件 对于我们的 linux 服务器(当然也适用于桌面端),时常进…

Pyside6详细使用教程python之GUI开发

1、首先需要安装Pyside6,终端执行命令: pip3.10 install pyside6 2、你们的一般是 pip install pyside6 2、如下代码创建一个简易程序导入必要的模块 import sys from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton,…

【数学 排列组合】1643. 第 K 条最小指令

本文涉及知识点 数学 排列组合 LeetCode1643. 第 K 条最小指令 Bob 站在单元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以为 Bob 提供导航 指令 来帮助他到达目的地 destination 。 指令 用字符串表示&am…