pac自动代理

1.pac 定义

PAC,一个自动代理配置脚本,包含了很多使用 JavaScript 编写的规则,它能够决定网络流量走默认通道还是代理服务器通道,控制的流量类型包括:HTTP、HTTPS 和 FTP。

本质是一段js

function FindProxyForURL(url, host) {
return "DIRECT";
}

2. 参考配置地址

地址:pac配置地址

3. 实际配置案例

3.1 编写pac文件

下面这段表示的是如果是本机ip192.168.8.0网段的,就走192.168.2.207:443代理,如果不是的话,就直连

function FindProxyForURL(url, host) {
    if (isInNet(myIpAddress(), "192.168.8.0", "255.255.255.0")) {
      return "PROXY 192.168.2.207:443";
    }
    return "DIRECT";
  }

3.1.1 return 语句有三种指令:

  • DIRECT,表示无代理直接连接
  • PROXY host:port,表示走host:port 的 proxy 服务
  • SOCKS host:port,表示走host:port 的 socks 服务

3.1.2 内置函数

3.1.2.1 dnsDomainIs

类似于 ==,但是对大小写不敏感,

if (dnsDomainIs(host, "google.com") || 
dnsDomainIs(host, "www.google.com")) {
return "DIRECT";
}
3.1.2.2 shExpMatch

Shell 正则匹配,* 匹配用的比较多,可以是*.http://example.com,也是可以下面这样,

if (shExpMatch(host, "vpn.domain.com") ||
shExpMatch(url, "http://abcdomain.com/folder/*")) {
return "DIRECT"; 
}
3.1.2.3 isInNet

判断是否在网段内容,比如 10.1.0.0 这个网段,10.1.1.0 就在网段中,

if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0")) {
return "DIRECT";
}
3.1.2.4 主机ip
if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0")) {
return "PROXY 10.10.5.1:8080";
}
3.1.2.5 dnsResolve

通过 DNS 查询主机 ip,

if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) {
return "DIRECT";
}
3.1.2.6 isPlainHostName

判断是否为诸如http://barret/,http://server-name/ 这样的主机名,

if (isPlainHostName(host)) {
return "DIRECT";
}
3.1.2.7 isResolvable

判断主机是否可访问

if (isResolvable(host)) {
return "PROXY proxy1.example.com:8080";
}
3.1.2.8 dnsDomainLevels

返回是几级域名,比如dnsDomainLevels(http://barretlee.com) 返回的结果就是 1,

if (dnsDomainLevels(host) > 0) {
return "PROXY proxy1.example.com:8080";
} else {
return "DIRECT";
}

3.2 配置nginx,将pac文件上传到服务器

本案例放置pac文件的路径

在这里插入图片描述

nginx 配置

 location /proxy.pac {
      alias /usr/local/openresty/nginx/pac/proxy.pac; //绝对路径
    }

3.3 配置自动代理

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值