代理服务简介

什么是代理服务

  • 代理-代理办理(代理理财、代理收货、代理购物等等)。

HTTP请求没有代理服务的模型图

HTTP请求具有代理服务的模型图

代理分类

  • 正向代理
  • 反向代理

正向代理

  • 当局域网不能上网时,可以在浏览器设置正向代理满足上网要求
  • 当我们想通过翻墙访问国外网站查询资料,可以在浏览器设置正向代理
  • 当服务器只允许某个端的IP访问(比如googe),所以我们需要请求运行访问的那个客户端,在让其帮我们转发请求

正向代理模型图

反向代理

  • 服务端有很多工程模块的时候,需要通过Nginx代理实现流量的分发

反向代理模型图

反向代理模型图解释:

  • 客户端需要自己去请求DNS获取服务端地址;
  • 代理是为服务端服务的;
  • 红色虚线表示防火墙;
  • 配置在服务端,分发客户端请求到不同的服务端
  •     主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息

代理区别

  • 区别在于形式上服务的对象不一样
  • 正向代理代理的对象是客户端,为客户端服务
  • 反向代理代理的对象是服务端,为服务端服务

代理模式和模块介绍

Nginx可支持的代理协议

常见的Nginx作为反向代理支持的协议

反向代理模式与Nginx代理模块

常见的Nginx作为正向代理支持的协议

注意:

  • 不能支持使用HTTPS协议
  • Nginx使用HTTP协议作为正向代理的协议
  • Nginx使用正向代理范围比较窄

nginx 反向代理

代理服务proxy_pass配置语法

  • Syntax: proxy_pass URL;
  • Default: —
  • Context: locationif in locationlimit_except

反向代理配置场景模拟

假设有两个服务一个对外暴露,一个不对外暴露只能内部访问,对外暴露的端口是80,在内部访问的端口是8080,通过访问对外暴露的80服务来访问8080服务

(1)创建两个HTML静态资源文件

http_proxy.html文件

  1. <h1>Welcome to http_proxy!!!!</h1>

 http_proxy_redirect.html 

  1. <h1>Welcome to http_proxy_redirect_81!!!!</h1>

(2) 编辑location

配置对外暴露的代理

  1. server {
  2. listen 80;
  3. server_name www.zhangbiao.com;
  4. location ~ /test_proxy.html$ {
  5. proxy_pass http://127.0.0.1:8080;
  6. }
  7. }

  

内部才能访问的服务

  1. server {
  2. listen 8080;
  3. server_name 127.0.0.1;
  4. location / {
  5. root /opt/app/code2;
  6. index http_proxy_redirect.htm;
  7. }

  

Nginx作为代理服务_代理配置语法补充

proxy-缓冲区

  • Syntax: proxy_buffering on | off;  
  • Default: proxy_buffering on;
  • Context: http, server, location

扩展:

proxy_buffer_size-设置缓冲区大小(内存页大小)

proxy_buffers-设置缓冲区数量和大小(内存页数量和大小)

proxy_busy_buffers_size-设置最大缓冲区大小

proxy-重定向

  • Syntax:  proxy_redirect default;  proxy_redirect off;  proxy_redirect redirect replacement;
  • Default: proxy_redirect default;
  • Context: http, server, location

proxy-头信息

  • Syntax: proxy_set_header field value;
  • Default: proxy_set_header Host $proxy_host;  proxy_set_header Connection close;
  • Context: http, server, location

扩展:

proxy_hide_header-设置隐藏头信息字段

proxy_set_body-设置请求体返回信息

proxy-超时

  • Syntax: proxy_connect_timeout time;
  • Default: proxy_connect_timeout 60s;
  • Context: http, server, location

扩展:

proxy_read_timeout-从代理服务器读取响应的超时时间

proxy_send_timeout-设置将请求传输到代理服务器的超时时间

代理配置及配置规范

代理通用配置

  1. location / {
  2. proxy_pass http://127.0.0.1:8080;
  3. include proxy_params;
  4. }

  

proxy_params

  1. proxy_redirect default;
  2.  
  3. proxy_set_header Host $http_host;
  4. proxy_set_header X-Real-IP $remote_addr;
  5.  
  6. proxy_connect_timeout 30;
  7. proxy_send_timeout 60;
  8. proxy_read_timeout 60;
  9.  
  10. proxy_buffer_size 32k;
  11. proxy_buffering on;
  12. proxy_buffers 4 128k;
  13. proxy_busy_buffers_size 256k;
  14. proxy_max_temp_file_size 256k;

代理配置详解: 

proxy_redirect default; 

  • 没有重定向就配置成默认,除非后端返回301情况下设置成具体重定向地址  

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

  • 设置字段重新定义或附加到传递给代理服务器的请求头

proxy_connect_timeout 30;

  • 设置代理连接超时时间

proxy_read_timeout 60;

  • 设置从代理服务器读取响应的超时时间

proxy_send_timeout 60;

  • 设置向代理服务器发送请求的超时时间

proxy_buffering on;

  • 设置启用或禁用来自代理服务器的响应缓冲

proxy_buffer_size 32k;

  • 设置用于读取从代理服务器接收的响应的第一部分的缓冲区的大小

proxy_buffers 4 128k

  • 设置用于从代理服务器读取响应的缓冲区的数量和大小,用于单个连接。

proxy_busy_buffers_size 256k;

  • 设置当启用来自代理服务器的响应缓冲时,限制可能忙于向响应客户端发送响应的缓冲区的总大小,而响应尚未完全读取。

proxy_max_temp_file_size 256k;

  • 设置当启用来自代理服务器的响应缓冲,并且整个响应不适合proxy_buffer_size和proxy_buffers指令设置的缓冲区时,响应的一部分可以保存到临时文件中。 该指令设置临时文件的最大大小。 一次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。
  1. location / {
  2. index index.jsp;
  3. proxy_pass http://hello; #在这里设置一个代理,和upstream的名字一样
  4. #以下是一些反向代理的配置可删除
  5. proxy_redirect off;
  6. #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
  7. proxy_set_header Host $host;
  8. proxy_set_header X-Real-IP $remote_addr;
  9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  10. client_max_body_size 10m; #允许客户端请求的最大单文件字节数
  11. client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
  12. proxy_connect_timeout 300; #nginx跟后端服务器连接超时时间(代理连接超时)
  13. proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时)
  14. proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时)
  15. proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  16. proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
  17. proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
  18. proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
  19. }
  20. }

  

Nginx作为代理服务的更多相关文章

  1. Nginx作为代理服务之正反代理

    Nginx作为代理服务之正反代理 首先什么是代理,就跟明星的经纪人类似,比如作为苍老师经纪人的我,如果你们需要和苍老师拍小电影,可以跟我这个经纪人来商量比如价格啊,时间等相关信息,那么我就作为一个代理 ...

  2. Nginx作为代理服务之反向代理

    Nginx作为代理服务之反向代理 需求:我们需要访问一个服务,但是服务端只接受8080端口,所以需要在nginx中配置反向代理,帮助客户端代理实现. 1. 创建一个html放入到一个文件夹中 2. 在 ...

  3. 11、Nginx反向代理服务

    1Nginx代理服务基本概述 1.代理一词并不陌生, 该服务我们常常用到如(代理理财.代理租房.代理收货等等),如下图所示 2.在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务 ...

  4. nginx的代理服务

    nginx的代理服务 正向代理和反向代理 正向代理服务器就是用来让局域网的客户端接入外网访问外网资源,反向代理就是让外网的客户端接入局域网中的站点以访问点中的资源 正向代理 我是一个用户,我访问不了某 ...

  5. nginx 反向代理服务

    目录 Nginx代理服务基本概述 Nginx代理服务常见模式 Nginx代理服务支持协议 Nginx反向代理配置语法 Nginx反向代理场景实践 配置代理实战 在lb01上安装nginx Nginx代 ...

  6. windows上 nginx 配置代理服务,配置多域名,以及最简单实现跨域配置

    Nginx,不用多说啦,大家都熟悉的不能再熟悉了,它是一款轻量级的高性能Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,最近在本地研究将nginx和resin配合使用,使服务 ...

  7. Nginx 作为代理服务与负载均衡

    代理服务 代理一代为办理(代理理财.代理收货等等) 代理区别 区别在于代理的对象不一样 正向代理代理的对象是客户端 反向代理代理的对象是服务端 反向代理配置 server { listen 80; s ...

  8. Linux 部署Nginx反向代理服务 使用openssl自生成证书并配置https

    1.安装Nginx编译所依赖的包 正常centos中可以使用yum安装一下依赖包: yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel ...

  9. 搭建Nginx正向代理服务

    需求背景: 前段时间公司因为业务需求需要部署一个正向代理,需要内网服务通过正向代理访问到外网移动端厂商域名通道等效果,之前一直用nginx做四层或者七层的反向代理,正向代理还是第一次配置,配置的过程也 ...

随机推荐

  1. openpose开发(1)官方1.5版本源码编译

    环境 WIN10系统,联想Y7000配置,8G内存 VS2019 cuda10 cudnn10 opencv4.11没有扩展库 显卡 1050TI 用到的库(提前下载好的模型,依赖库,user_cod ...

  2. Pandas | 25 文件读写

    Pandas I/O API是一套像pd.read_csv()一样返回Pandas对象的顶级读取器函数. 读取文本文件(或平面文件)的两个主要功能是read_csv()和read_table().它们 ...

  3. 请用js语言实现sort排序函数,要求:sort([4,5,2,-1,0])返回[-1,0,2,4,5]

    Array.prototype.sort1=function(fn){ var len=this.length; while(len>0){ for(var i=0;i<len;i++){ ...

  4. TCP/IP协议总结

    TCP/IP网络协议栈分为四层, 从下至上依次是: 链路层 其实在链路层下面还有物理层, 指的是电信号的传输方式, 比如常见的双绞线网线, 光纤, 以及早期的同轴电缆等, 物理层的设计决定了电信号传输 ...

  5. vb.net 对字符串中的括号匹配进行判断,容许嵌套

    '   括号检查 '     括号共有四种:  1(英文圆括号),2(中文圆括号),3[方括号],4{花括号} '      要左右匹配(可以嵌套) Private Shared Function i ...

  6. 第10组 Beta冲刺(2/4)

    队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 编写商品主界面 展示GitHub当日代码/文档签入记录 暂无代码 接下来的计划 编写购买功能 还剩下哪些 ...

  7. Spring Security教程(四)

    在前面三个博客的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session ...

  8. Spring Security教程(一)

    一 概要 Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架.它提供全面的安全性解决方案,同时在 Web 请求级和方法调用级处理身份确认和授权.这 ...

  9. Django 分析(一)Requst、Middleware 和 Response 数据流

    0. 前言 通过 Django 编写 HTTP 接口时,我们需要指定 URL.Model 和 Views 函数(或者指定 RESTBaseView 对象解析参数和编写逻辑) 编写逻辑时的基本思路就是解 ...

  10. 你真的了解java的lambda吗?- java lambda用法与源码分析

    你真的了解java的lambda吗?- java lambda用法与源码分析 转载请注明来源:cmlanche.com 用法 示例:最普遍的一个例子,执行一个线程 new Thread(() -> ...