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

什么是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 / {
            #配置反向代理,转到myhost
            proxy_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(实现负载均衡)

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统安全:Linux安全审计,Linux日志详解

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…

【树莓派】yolov5 Lite,目标检测,树莓派4B,推理v5lite-e_end2end.onnx,摄像头实时目标检测

文章目录 YOLOv5 Lite: 在树莓派上轻松运行目标检测1. 环境配置2. 克隆项目3. 安装依赖项4. 下载模型权重5. 理解end2end的含义6. 示例推理7. 文件介绍8. 把文件弄到树莓派4B执行9. 进一步尝试fp16的onnx(行不通)10. 视频流检测 这里有大概的环境配置&am…

80个在线小游戏源码

源码简介 搭建80个在线小游戏网站源码,解压即可食用,支持在本地浏览器打开。 安装教程 纯HTML,直接将压缩包上传网站目录解压即可 首页截图 源码下载 80个在线小游戏源码-小8源码屋

Mac虚拟机装Windows Mac环境安装Win虚拟机教程 macbookpro安装windows虚拟机

在如今多元的数字时代,我们经常需要在不同的操作系统环境下进行工作和学习。而对于Mac用户来说,有时候需要在自己的电脑上安装Windows操作系统,以体验更多软件及功能,而在Mac安装Windows虚拟机是常用的一种操作。下面就来看看Mac虚…

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构

前端框架EXT.NET Dotnet 3.5开发的实验室信息管理系统(LIMS)成品源码 B/S架构 LIMS实验室管理系统 发展历史 实验室信息管理系统(LIMS),就是指通过计算机网络技术对实验的各种信息进行管理的计算机软、硬件系统。也就是将计算机网络技术与现…

新手答疑 | 零基础该怎么学习嵌入式?嵌入式Linux学习路线是什么?嵌入式开发板推荐?

很多初学者想要涉足嵌入式Linux开发领域,但往往在刚入门阶段,会因为初次接触到大量复杂的概念术语和深奥的技术文档感到压力重重,面对这些内容不知从何下手,感到十分迷茫,网上的内容也纷繁复杂,没有清晰的学…

《前端面试题》- React - 如何区分函数组件和类组件

问题 如何区分函数组件和类组件? 答案 可以使用instanceof 或者Component.prototype.isReactComponent。 示例 函数组件 export default function FunctionComonent() {if(FunctionComonent.prototype.isReactComponent){console.log(FunctionComonent是类组件…

白平衡简介

文章目录 白平衡的概念白平衡的调节常见的白平衡模式 白平衡的概念 白平衡是指摄影、摄像和显示技术中的一项重要概念,用于调节图像中的白色或中性灰色的色彩,使其看起来在不同光源条件下都是准确的白色或灰色。白平衡的主要目的是确保图像的色彩准确性…

C++的二叉搜索树

目录 基本概念 二叉搜索树的实现 插入结点 查找结点 删除结点 删除结点左为空 删除结点右为空 基于特殊情况的优化 删除结点左右不为空 基于特殊情况的优化 完整代码 二叉搜索树的实际应用 K和KV模型 改造二叉搜索树为为KV模型 基本概念 1、二叉搜索树又称二叉…

科技云报道:走入商业化拐点,大模型“开箱即用”或突破行业困局

科技云报道原创。 大模型加速狂飙,AI商业化却陷入重重困境。 一方面,传统企业不知道怎么将AI融入原始业务,另一方面,AI企业难以找到合适的商业化路径。 纵观海外AI玩家,已经有许多企业趟出了自己的商业化道路。 微…

Linux系统安全与应用【一】

目录 1.账号安全控制 1.1 系统账号清理 1.2 密码安全控制 1.3 命令历史限制 1.4 命令总结 2.系统引导和登录控制 2.1 使用su命令切换用户 2.2 限制使用su命令的用户 3.可插拔式认证模块PAM 3.1 linux中的PAM安全认证 3.2 PAM认证原理​编辑 3.3 PAM认证的构成 3.4 P…

项目管理中常用的三个工具:甘特图、看板、燃尽图

在日常项目管理的实践中,为了更有效地追踪项目进度、优化资源配置和提高团队协作效率,管理者常常会借助一些工具来辅助工作。这些工具的本质在于将抽象复杂的项目管理任务具象化、简单化,以更直观、方便的方式呈现出来。 以下介绍项目管理中…

基于Springboot的在线动漫信息平台

基于SpringbootVue的在线动漫信息平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 热门动漫 文章专栏 会员分享 论坛信息 动漫资讯 后台登录 动漫分类管…

在Spring Boot应用中实现阿里云短信功能的整合

1.程序员必备程序网站 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 2.导入坐标 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><…

SpringCloud之Feign集成Ribbon

Feign定义【可跳过】 Spring Cloud Feign是一个声明式的伪Http客户端&#xff0c;它使得写Http客户端变得更简单。其英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c;是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#x…

[Rust开发]在Rust中使用geos的空间索引编码实例

geos的空间索引用的是STRTree&#xff0c;这是一种基于STR算法的四叉树索引&#xff0c;有如下特点&#xff1a; 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引 STR(Sort-Tile-Recursive,递归网格排序) 基本思想是将所有的矩形以“tile”的方式分配到r/n&a…

netsh int ipv4 show dynamicport tcp动态端口port设置

netsh int ipv4 show dynamicport tcp netsh int ipv4 set dynamicport tcp start4000 num10000

STM32_舵机的实战

一、配置相应的管脚 二、写代码

linux+ndk把jni制作成so库供apk使用(带线程的回调)

我们就不墨迹了,直接开始,往往我们需要jni给我们回调一些数据,并且是实时的回调,这里我们就需要多写一些东西了 1.先在安卓里面设置好接口以及回调,我自己给你们看源代码 package com.example.myndkapplicationimport android.os.Bundle import android.util.Log import androi…

基于Python实现心脏病数据可视化DEA+预测【500010103.1】

一、数据说明 该心脏病数据集是通过组合 5 个已经独立可用但以前未合并的流行心脏病数据集来策划的。在这个数据集中&#xff0c;5 个心脏数据集结合了 11 个共同特征&#xff0c;使其成为迄今为止可用于研究目的的最大心脏病数据集。 该数据集由 1190 个实例和 11 个特征组成…