nginx反向代理 负载均衡

一、反向代理:

1.反向代理介绍:

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

2.七层代理和四层代理:

2.1 七层代理:

  • 七层是最常用的反向代理,只能配置的在nginx配置文件的http模块中
  • 配置的方法名称:upstream 模块 ,不能写在server中,也不能在location中,在http模块当中是独立的一个配置

2.2 四层代理:

  • 四层代理是基于tcp/ip协议层的代理转发方式,可以实现基于ip地址和端口进行负载均衡转发。
  • 四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发。流量转发。
  • 配置的方法名称:stream,stream是不能配置在http模块中,配置在全局当中。是属于一个独立的模块,不属于其他任何模块。

3.反向代理web服务器:

3.1 代理服务器配置:

bash 复制代码
vim /apps/nginx/conf.d/www.conf
server{
        listen 80;
        server_name  www.wzw.com;
        root    /apps/nginx/html;
     location  / {
        proxy_pass http://192.168.88.101;
}

}

3.2 服务器配置 :

vim /apps/nginx/html/index.html

bash 复制代码
<html>
<body>
<h1>this is yunjisuan  </h1>
<img src="http://www.wzw.com/2.jpg"/>
</body>
</html>

3.3 客户端访问:

3.4 代理不同端口:

代理服务器添加监听端口:

4.反向代理动静分离:

4.1 准备:

4.2 代理服务器配置:

bash 复制代码
server{
  listen 80;
  listen 8080;
  server_name www.wzw.com;
  root /apps/nginx/html;
  

location  /static {
        proxy_pass http://192.168.88.128;
}

location  /api  {
   proxy_pass http://192.168.88.101;
}
}

nginx -s reload

4.3 动态服务器配置:

bash 复制代码
  cd /apps/nginx/html

  mkdire  api

  vim index.html

  api
  api
  api
  api
  api
  api
  api

vim /apps/nginx/conf/nginx.conf

 server块添加监听端口:
   listen 8080;

nginx -s reload

4.4 静态服务器配:

bash 复制代码
  cd /apps/nginx/html

  mkdire  api

  vim index.html
   
  static
  static
  static
  static
  static
  static

4.5 测试:

5.反向代理服务器的缓存功能:

后端服务器突然关闭时,客户端无法访问,代理服务器的缓存功能可以加强安全稳定性。

5.1 主配置文件定义缓存参数:

proxy_cache_path /apps/nginx/proxycache #定义缓存保存路径

levels=1:1:1 #定义缓存目录结构层次

keys_zone=proxycache:20m #指内存中缓存的大小,主要用于存放key

inactive=120s #缓存有效时间

max_size=10g; #最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值

5.2 子配置文件调用缓存功能:

proxy_cache proxycache ##使用定义名称;

proxy_cache_key $request_uri; #对客户端url的数据进行MD5的运算做为缓存的key

proxy_cache_valid code ... time; #定义对【响应码】的响应内容的缓存时长

proxy_cache_valid any 1m; #除指定的状态码返回的数据以外的缓存多长时间,必须设置,否则不会缓存

清理缓存 方法1::rm -rf 缓存目录 (还是这个方便。。)

方法2: 第三方扩展模块ngx_cache_purge

5.3 示例:

代理服务器:

bash 复制代码
vim /apps/nginx/conf/nginx.conf
 
http模块添加:

proxy_cache_path /apps/nginx/proyxcache levels=1:1:1  keys_zone=proxycache:20m inactive=120s max_size=1g;

vim /apps/nginx/conf.d/www.conf

server块添加:

   proxy_cache proxycache;
   proxy_cache_key $request_uri;
   proxy_cache_valid 200 302 301 10m;
   proxy_cache_valid any 5m;

测试:

真实服务器关闭服务:

6.反向代理客户端IP透传:

相关推荐
Z21-X12 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生
进击的荆棘14 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
瑞雪兆丰年兮15 小时前
JavaWeb-day11-SpringBootWeb案例(文件上传)
java·运维·服务器·javaweb·oss
那明眸似水15 小时前
云原生项目三:Docker秒级启动NextCloud个人网盘存储办公系统
linux·运维·docker·云原生·容器
小南家的青蛙17 小时前
微服务体系下DevOps运维岗位面试方案设计
运维·面试·职场和发展·devops
知已难寻1 天前
Docker 入门:容器技术与 Docker 基础
java·运维·服务器·docker·云原生·容器
Alluxio1 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
Sayai2 天前
Neo4j 图数据质量检查实战:环路检测、孤立节点与连通分量,两条 Cypher 引出的数据体检清单(含变长路径性能陷阱)
运维·neo4j·图数据库·数据质量·cypher
Elastic 中国社区官方博客2 天前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
方便面不加香菜2 天前
Docker Volume -- 管理卷Volume详解
运维·docker·容器