当前位置: 首页 > news >正文

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

目录

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 wgetwget -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.lryc.cn/news/262967.html

相关文章:

  • (C++)将x减到0的最小操作数--滑动窗口
  • 回答某位同学的问题:残差网络常用来分类,可以用于回归预测吗?
  • C语言初学5:运算符
  • 亿某通电子文档安全管理系统任意文件上传漏洞 CNVD-2023-59471
  • 产品入门第四讲:Axure动态面板
  • 【数据结构】哈希表算法总结
  • 微信小程序单图上传和多图上传
  • github入门基础操作
  • Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述
  • vscode使用remote ssh到server上 - Node进程吃满CPU
  • 如何在Go中使用日期和时间
  • 2023_Spark_实验二十九:Flume配置KafkaSink
  • Koa.js 入门手册:洋葱模型插件机制详解以及常用中间件
  • 零信任 SASE 办公安全解决方案:提升企业网络安全与灵活性
  • 【提示工程】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
  • AWS解决方案架构师学习与备考
  • 如何搭建企业管理系统Odoo并远程访问管理界面【内网穿透】
  • 【Git】git常用问题汇总
  • 2024免费mac苹果电脑系统电脑管家CleanMyMac X
  • ElasticSearch详细搭建以及常见错误high disk watermark [ES系列] - 第497篇
  • ADB:获取坐标
  • 关于“Python”的核心知识点整理大全27
  • 实验三 MapReduce编程
  • element组件库的日期选择器如何限制?
  • QSqlQueryModel
  • docker-compose介绍和用法
  • Mac下ERROR: Cannot connect to the Docker daemon
  • 本地项目添加到gitlab命令操作
  • t-io 程序执行后,jvm不退出的原因
  • Vue3使用Three.js导入gltf模型并解决模型为黑色的问题