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

2023-12-19 15:01

本文主要是介绍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可以通过简单的配置实现动静分离。

这篇关于Ngnix之反向代理、负载均衡、动静分离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512641

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

proxy代理解决vue中跨域问题

vue.config.js module.exports = {...// webpack-dev-server 相关配置devServer: {host: '0.0.0.0',port: port,open: true,proxy: {'/api': {target: `https://vfadmin.insistence.tech/prod-api`,changeOrigin: true,p

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

请解释Java Web应用中的前后端分离是什么?它有哪些好处?什么是Java Web中的Servlet过滤器?它有什么作用?

请解释Java Web应用中的前后端分离是什么?它有哪些好处? Java Web应用中的前后端分离 在Java Web应用中,前后端分离是一种开发模式,它将传统Web开发中紧密耦合的前端(用户界面)和后端(服务器端逻辑)代码进行分离,使得它们能够独立开发、测试、部署和维护。在这种模式下,前端通常通过HTTP请求与后端进行数据交换,后端则负责业务逻辑处理、数据库交互以及向前端提供RESTful

MySQL数据库负载均衡

数据库负载均衡是通过将数据库请求分散到多个数据库服务器上,以提高数据库的处理能力和可用性。在高并发的场景下,使用数据库负载均衡器可以有效避免单点故障,提高系统的整体性能和可靠性。 数据库负载均衡器 数据库负载均衡器可以是硬件设备或软件解决方案。在MySQL环境中,一些流行的数据库负载均衡器包括: MySQL Proxy:MySQL Proxy是一个简单的中间件,用于监控、分析或增强对MySQ