0%

nginx代理

开头

今天(2020-5-14)试着用nginx做了一下后端接口的代理,然后了解一下正反向代理,记录一下学习笔记

代理服务器

就是在请求端和响应端之间,多了一层处理我们请求的服务器,叫做代理服务器

分类

正向代理

  • 过程:客户端向代理服务器发送http请求,并指定目标服务器,然后代理服务器去客户端指定的服务器请求内容,然后把接收到的内容在返回给客户端
  • 作用:实现科学上网;A能访问B但是不能访问Google,B可以访问Google,所以让A访问B,然后B去访问Google,再把收到的内容返回给A

反向代理

  • 过程:和上述的过程类似,只是这时请求的url是代理服务器提供,然后代理服务器根据客户端发送的请求,去真正的目标服务器请求对应的内容,这个过程对客户端不可见,客户端并不知道还有一个服务器
  • 作用:保护隐藏原始资源服务器、负载均衡、缓存静态内容等

对比

  • 正向代理是代理客户端,使客户端对服务器不可见
  • 反向代理是代理服务器,使服务器对客户端不可见

实战

使用nginx做正反向代理实验

正向代理

反向代理

  • 实验背景:一个前后端分离的demo,用nginx部署前端项目,并代理后端的接口;
  • 配置文件如下,注:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    server{
    listen 80;
    server_name ip地址或域名;
    root 前端项目路径;
    # 部署页面
    location = /todo {
    # 备注:如果外面root配置了目录,这里寻找本机目录时,路径为:前端项目路径+/todo
    # 如果内部使用了root,寻找本机目录时,路径为:root目录+/todo
    # 如果内部使用了alias,寻找本机目录时,路径直接为root目录
    index index.html;
    }
    # 部署静态资源
    location ~.*\.(css|js|png|jpg|jepg){
    root 静态资源路径;
    }
    # 转发后端接口 这里一定要在结束添加 /;否则请求后端接口时,会把apis也携带在请求里
    location ^~ /apis/ {
    proxy_pass 后端接口根路径;
    }
    }

总结

正向代理的对象是客户端,反向代理的对象是服务端

参考链接