Ngnix之反向代理、负载均衡、动静分离

news2024/11/24 19:27:13

目录

1. Ngnix 

1.1 Linux系统Ngnix下载安装

1.2 反向代理

正向代理(Forward Proxy):

反向代理(Reverse Proxy):

1.3 负载均衡

1.4 动静分离


1. Ngnix 

Nginx是一个高性能的开源Web服务器,它还可以用作反向代理、负载均衡器以及动静分离的工具。

1.1 Linux系统Ngnix下载安装

nginx: download

 

yum install -y wget

wget -c http://nginx.org/download/nginx-1.24.0.tar.gz

上传到服务器后:

#安装nginx所需要的依赖包
yum install -y gcc-c++	zlib zlib-devel	openssl openssl-devel pcre pcre-devel
#解压安装包
tar -zxvf nginx-1.24.0.tar.gz
#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx
#对nginx编译和安装
make & make install

进入到/usr/local/nginx/sbin/中


#启动,
./nginx
#停止
./nginx -s stop
#重载
./nginx -s reload


1.2 反向代理

正向代理和反向代理是两种不同的代理服务器配置,它们在作用方向和目的上有所不同。以下是它们的主要区别:

正向代理(Forward Proxy):

  1. 作用方向: 正向代理是在客户端和目标服务器之间的代理服务器。客户端向代理服务器发送请求,然后代理服务器将请求转发给目标服务器,并将目标服务器的响应返回给客户端。

  2. 隐藏客户端身份: 正向代理可以隐藏客户端的真实身份,因为目标服务器只知道代理服务器,而不知道最终的客户端。这可以用于绕过访问限制或保护客户端隐私。

反向代理(Reverse Proxy):

  1. 作用方向: 反向代理位于目标服务器和客户端之间。客户端向反向代理发送请求,然后反向代理将请求转发给一个或多个目标服务器,并将目标服务器的响应返回给客户端。

  2. 隐藏服务器身份: 反向代理可以隐藏后端服务器的真实身份,因为客户端只知道代理服务器,而不知道哪个后端服务器响应了请求。这有助于提高安全性和负载均衡。

  3. 负载均衡: 反向代理常用于分发客户端请求到多个后端服务器,实现负载均衡,确保各个服务器都能得到合理的负载。

总的来说,正向代理代表客户端与服务器通信,而反向代理代表服务器与客户端通信。正向代理隐藏客户端身份,而反向代理隐藏服务器身份。

反向代理到Tomcat 8080端口nginx.conf如下:

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
	    proxy_pass http://localhost:8080;
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

1.3 负载均衡

负载均衡是通过将请求分发到多个服务器上,以实现更好的性能、可用性和可伸缩性。Nginx可以作为负载均衡器。

Nginx支持多种负载均衡算法,这些算法用于分发客户端请求到后端服务器,以实现负载均衡和提高系统的性能。以下是一些常见的负载均衡算法:

  1. 轮询算法(Round Robin): 每个新的请求按顺序分配给后端服务器列表中的下一个服务器。
  2. IP哈希算法(IP Hash):使用客户端的IP地址计算哈希值,然后将请求分发到后端服务器中的一个,使得相同IP的客户端每次请求都被分配到相同的服务器。
  3. 加权轮询算法(Weighted Round Robin): 给每个后端服务器分配一个权重,高权重的服务器获得更多的请求。
  4. 最小连接数算法(Least Connections): 将请求分发给当前连接数最少的后端服务器。
  5. 最短响应时间算法(Least Time):将请求分发给响应时间最短的后端服务器。

 下面是使用轮询算法在两个Tomcat上负载均衡:

docker pull tomcat:8.0
docker run -d -p 9090:8080 --name tomcat01 tomcat:8.0

nginx.conf如下:

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

     upstream myserver{
        server localhost:8080;
        server localhost:9090;	
        }   
    server {
        listen       80;
        server_name  localhost;

        location / {
	    proxy_pass http://myserver;
            root   html;
            index  index.html index.htm;
        }

   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

1.4 动静分离

动静分离是指将静态内容(如图片、CSS、JavaScript文件)和动态内容(如PHP、Python等生成的页面)分开处理,以提高性能和减轻服务器负担。Nginx可以通过简单的配置实现动静分离。

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

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

相关文章

无惧数据泄露风险:迅软科技与电子科技公司共同谱写的安全合奏

当今,电子信息产品已广泛渗透到我们生活的各个领域,涵盖通信、医疗、计算机及其周边视听产品、玩具、军工等多个领域。电子信息科技行业作为典型的知识技术密集型行业,具备科技含量高、专利众多、知识产权丰富、核心数据密级高等特点。随着行…

猫头虎博主揭秘:令人叹为观止的编程语言与代码技巧 ‍

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

GEE:根据像素数量删除非常分散且面积较小的对象(斑块/超像素)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上,斑块(对象/超像素)的像素数量计算方法,并根据斑块的像素数量删除某一类土地利用数据中面积低于指定阈值的斑块(对象/超像素)的代码。 结果如下图所示,简言之,就是将下图中面积小的对象删除,只…

MybatisPlus【进阶】--悲观锁,乐观锁,生成后台数据:javafaker

什么是悲观锁 悲观锁:十分悲观,认为总是出现问题,无论干什么都会上锁,再去操作 悲观锁是基于一种悲观的态度类来防止一切数据冲突,它是以一种预防的姿态在修改数据之前把数据锁住,然后再对数据进行读写&…

山西电力市场日前价格预测【2023-12-19】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-19)山西电力市场全天平均日前电价为562.84元/MWh。其中,最高日前电价为1168.60元/MWh,预计出现在18:00。最低日前电价为361.89元/MWh,预计…

分享!!!(一)小编总结的base64、blob、图片文件二进制相互转换的方式以及源码

目录 第一章 了解 1.1 大概结构 1.2 准备阶段 1.2.1 了解canvas 1.2.2 了解imageData 1.2.3 了解imgUrl 1.2.4 了解base64 1.2.5 了解blob/文件二进制流 1.2.6 了解arraybuffer 1.2.7 文件、图片 第二章 掌握图中的相互转换 2.1 cavas 与 imageData的互相转换 2.1…

基于OpenVidu的视频会议解决方案

OpenVidu是什么 OpenVidu 是一个开源的实时音视频通信平台,基于 Apache 2.0 协议开源的 WebRTC 视频会议平台,源码仓库地址:https://github.com/OpenVidu/openvidu。它提供了一组 API 和 SDK ,使开发人员能够轻松地在 Web 和移动…

山区老人爱的礼物丨走进武隆区土地乡为山区老人送温暖

从车水马龙的城市到人烟稀少的乡村,穿越重峦叠嶂的高山,见到的是独属于大山的辽阔和山区老人眼中的星河。近日,传益千里为爱出发,在三棵柚公益基金会的支持下开展“山区老人爱的礼物”公益计划,走进武隆区土地乡&#…

GeoTrust SSL证书:您的网络信任卫士

在如今的数字化时代,我们的网络交易如脉搏般不断跳动,在这个过程中,安全保障尤其重要。于是像GeoTrust这样的品牌应运而生,它向我们承诺一件事情:无论在什么时候,我们的数据和交易都能得到最强的保护。下面…

Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、基于注解配置Bean 1.基本介绍 : 2.应用实例 : 3.注意事项 : 三、手动实现Spring 注解配置机制 1.需求 : 2.思路 : 3.实现 : 3.1 自定义注解类 3.2 自定义配置类 3.3 自定义容器类 3.4 在测试类中进行测试 四、自动装配 0.总述 : 1.AutoWired自动装…

关于 Redis 与传统关系型数据库的选择

当需要为你的应用程序选择合适的数据库时,选择何种数据库通常取决于你项目的特定要求。Redis 是一种高性能的内存数据存储,而 MySQL 等传统关系型数据库也各自具有自己的优势和劣势。在本期文章中,我们将探讨在 Redis 和传统关系型数据库之间…

minio异常处理:S3 API Requests must be made to API port

1、创建minio服务时候需要映射出console端口和api端口&#xff0c;指定console端口和api端口 docker run -p 9000:9000 -p 9099:9099 --name minio -d --restartalways -e "MINIO_ACCESS_KEYadmin" -e "MINIO_SECRET_KEYMINIOE:<&G5*;dL?(fr" -v…

【✅如何针对大Excel做文件读取?】

✅如何针对大Excel做文件读取&#xff1f; &#x1f7e9;如何针对大Excel做文件读取&#x1f7e9;XSSFWorkbook文件读取&#x1f7e9;EasyExcel文件读取 ✅扩展知识&#x1f7e9; EasyExcel简介&#x1f7e9;EasyExcel 为什么内存占用小&#xff1f; &#x1f7e9;如何针对大Ex…

JavaScript中的一些惊艳的编程技巧

你见过哪些令你膛目结舌的代码技巧&#xff1f; 代码世界有很多令人大呼小叫的技巧&#xff01;有的代码像魔术师一样巧妙地隐藏了自己&#xff0c;有的像魔法师一样让你眼花缭乱&#xff0c;还有的像瑜伽大师一样灵活自如。它们让我们惊叹不已&#xff0c;让我们觉得自己仿佛…

检测当前目录,将文件名输出到excel文件并建立链接

EXCEL是一个非常使用的软件,虽然我们平时仅使用他做一些报表,仅此而已; 我在工作中,由于很懒,不愿意做考试重复的工作,就想着使用vba的宏来完成重复的工作,这样就能省出一部分的时间来了。 本人不喜欢在博客里面写以下教程类的东西,我的理念是将工作中的痛点的解决办法…

我记不住的那些vim操作2

背景&#xff1a;最近在重新学习vi/vim&#xff0c;发现这个编辑器的用法真是太灵活了&#xff0c;所能掌控的也太多了&#xff0c;这次学习了一些之前没有学习过的内容&#xff0c;之前都是移动鼠标、编辑、复制、粘贴、保存等等(点我查看)&#xff0c;本次将介绍 标签、区域、…

设计模式-单例设计模式详解

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

一文图解 Transformer,小白也看得懂(完整版)

原作者&#xff1a;Jay Alammar 原链接&#xff1a;https://jalammar.github.io/illustrated-transformer 1.导语 谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果&#xff0c;引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。谷歌的Transformer模型最…

043.Python异常处理_自定义上下文管理器

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ESP32 核心闪存损坏

问题描述&#xff1a;使用Platform 开发ESP32-S3 报错通过串口打印报错提示为核心闪存损失具体报错如下。 ELF file SHA256: 25c739c3d81d8f15 E (183) esp_core_dump_flash: Core dump flash config is corrupted! CRC0x7bd5c66f instead of 0x0 Rebooting... ESP-ROM:esp32s3…