ats是一个通用代理,可配置为反向和转发代理;

转发代理可以用作基础架构中的中央工具来访问web, 它可以与缓存结合使用以降低
总体带宽使用率。转发代理充当本地网络上的客户端浏览器与这些客户端访问的所有(或所有
,由您的配置自行决定)网站之间的网守。转发代理将接受HTTP请求,执行您建立的任何过滤
或请求更改规则,并在适当时将请求转发到目标网站。响应将通过您的代理返回,可以选择
缓存和/或修改,然后返回到原始客户端。

转发代理可以使用两种模式:
Forward Proxy 转发代理
必须明确配置每个客户端才能使用转发代理。客户端浏览器将意识到他们正在使用代理,
并将适当地形成它们的HTTP请求。这会导致初始HTTP命令使用包含目标主机名的完全限定
URI发出来。

Transparent Proxy 透明代理
透明代理的使用通常与网络路由规则一起完成,网络路由规则通过您的代理重定向所有
出站HTTP流量. 客户端将表现并形成它们之间的HTTP 请求,就像它们直接联系远程站点一样,
并且不会意识到他们自己和远程服务器之间存在代理服务器。HTTP请求将按照其通常的形式
生成,仅包含命令中的路径和单独的主机请求标头。
GET /index?id=123 HTTP/1.1
Host: example.com

ats可以配置为同时作为前向和透明代理运行。

Proxy Configuration 代理配置
在ats中配置基本转发代理操作非常简单。

1. 允许ats 通过修改records.config中的proxy.config.url_remap.remap_required
CONFIG proxy.config.url_remap.remap_required INT 0

2. 可选项.如果ats将严格作为转发代理运行,您将需要通过修改records.config中的
proxy.config.reverse_proxy.enabled来禁用反向代理支持:
CONFIG proxy.config.reverse_proxy.enabled INT 0

可以还考虑其中的一些配置选项:
a> 设置proxy.config.http.no_dns_just_forward_to_parent确定将使用哪个主机
进行DSN解析;

b>如果使用代理缓存,则可以使用proxy.config.http.forward.proxy_auth_to_parent启用
或禁用代理身份验证。

c>客户端请求标头X-Forwarded-For 可以使用
proxy.config.http.insert_squid_x_forwarded_for切换;

d>可以使用proxy.config.http.insert_forwarded配置客户端请求标头Forwarded.

客户端配置
如果以透明模式运行代理,则客户端不需要特殊的代理配置.

如果在显示代理模式下运行,而网络上没有自动路由规则来引导所有出站流量通过
代理,则需要将客户端浏览器定向到代理。可以通过两种不同的方式实现:

可以将客户端配置为使用ats主机上的默认8080端口作为代理。这将导致来自该客户端
浏览器的所有请求都通过配置的单个转发代理发出。

安全考虑
值得注意的是,一旦将ats配置为转发代理,它将不加区别的接受来自任何人的代理请求,
如果可以从internet访问,则表示已配置开放代理。

这通常是不可取的,因为它允许任何人潜在的使用您的网络作为它们选择的网站流量来
源。为避免这种情况,必须确保代理服务器只能从您的专用网络中访问,或者由防火墙规则保护
,该规则仅允许您希望访问代理的用户。

ats 转发代理的更多相关文章

  1. ats反向代理和重定向

    作为反向代理缓存,ats代表源服务器提供的请求. ats的配置方式使客户端看起来像普通的原始服务器. 了解反向代理缓存通过转发代理缓存, ats代表请求内容的客户端队里对源服务器的web请求.反向代理 ...

  2. ssh转发代理:ssh-agent用法详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 使用ssh-agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如 ...

  3. 使用 ssh -R 建立反向/远程TCP端口转发代理

    转自:https://yq.aliyun.com/articles/8469 ssh是一个非常棒的工具, 不但能建立动态转发, 例如chrome的Switchy插件用到的就是这个技术.http://b ...

  4. ats透明代理

    透明代理是拦截客户端和服务器之间的连接而不可见的代理能力(比如ats). 必须要有一个网关设备,所有网络流量都通过该设备从客户端传递到Internet(或外部云).网关负责有效的将ATS拼接到该流量的 ...

  5. ats显示代理缓存

    如果要将ats用作显示代理缓存,则必须配置客户端软件(即浏览器)以将请求直接发送到ats. 如果没有将ats配置为使用透明度选项(通过交换机或路由器在路由到源服务器的情况下拦截客户端请求并重新路由到a ...

  6. NGINX转发代理情况下,获取客户单真实IP

    编译时加上http_realip_module 模块 realip模块生效的前提是:直接连接nginx的ip是在set_real_ip_from中指定的. 原机配置: set_real_ip_from ...

  7. 使用DANT做FTP的转发代理

    FTP不能直接使用nginx进行转发,想了一些办法,最后决定使用iptalbes做DNAT,相关于把这个机器做一台防火墙,做一个NAT 1.启用ip_forward vim /etc/sysctl.c ...

  8. Nodejs 请求转发代理

    var sendPromise = function (res, callback) { var options = { hostname: settings.Ip, port: settings.P ...

  9. IIS充当代理转发请求到Kestrel

    接着上篇博文为ASP.NetCore程序启用SSL的code,这篇将介绍如何用IIS充当反向代理的角色转发请求到Kestrel服务器 与ASP.NET不同,ASP.netCore使用的是自托管web服 ...

随机推荐

  1. MySql+Memcached架构的问题

    Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. Memcached服务器使用基于Slab的内存管 ...

  2. 使用Discuz!自带参数防御CC攻击以及原理

    CC攻击确实是很蛋疼的一种攻击方式,Discuz!的配置文件中已经有了一个自带的减缓CC攻击的参数,在配置文件config.inc.php中: $attackevasive = 0;  // 论坛防御 ...

  3. Error: Couldn't find preset "env" relative to directory "/Users/user/ethereumjs-vm"

    运行npm run build时遇见这个问题,解决办法是安装: npm install --save-dev babel-preset-env 就解决了

  4. the django travel(two)分页

    一:django路由系统: 注意:我们在urls.py中 定义url的时候,可以加$和不加$,区别的是:加$正则匹配的时候,比如:'/index/$'只能匹配'/index/'这样的url 不能匹配' ...

  5. P1441 砝码称重

    题目描述 现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0). 输入输出格式 输入格式: 输入文件weight.in的第1行为有两个整数n ...

  6. 你的安全设置不允许网站使用安装在你的计算机上的ActiveX控件

    在IE中,工具--INTERNET选项--安全--自定义级别--"下载未签名的ActiveX控件"选项改成"提示"或"允许"就好了.

  7. 删除Oracle Online Redo 测试

    删除Oracle Online Redo 测试 SQL> select * from v$log; ​   GROUP#   THREAD# SEQUENCE#     BYTES BLOCKS ...

  8. MySQL学习【第四篇mysql体系结构管理】

    一.客户端与服务端模型 1.mysql是一个典型的c/s服务结构 1.mysql自带的客户端程序(/application/mysql/bin) mysql       mysqladmin   my ...

  9. 浏览器与go语言的websocket通信

    简介WebSocket是HTML5一种新的协议.顾名思义,它在服务器和浏览器之间建立了全双工通信. 需求背景区块链测试系统web前端平台需要动态接收后端发送的状态信息改变一次测试session过程的状 ...

  10. Kotlin安卓页面本地存储数据(方法和封装)

    直接上代码 封装: //存储key对应的数据 fun saveData(context: Activity, key: String, info: String) { val sharedPrefer ...