介绍:前面已经介绍了ATS的安装和PAC文件的写法格式,现在把nginx端口转发,pac file访问控制和ATS代理结合起来分别控制不同的机器访问不同URL权限的目的

效果如下

一、使用nginx端口转发

在机器192.168.43.85使用yum安装nginx

1.1 配置upstream

[root@localhost ~]# vim /etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections ;
} http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout ;
types_hash_max_size ; include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/ngx_http/http.conf.*;
} stream {
# Module ngx_stream_core_module
preread_buffer_size 128k; # Keep default value.
preread_timeout 180s;
proxy_protocol_timeout 180s;
tcp_nodelay on; # Enables the use of the TCP_NODELAY option.
variables_hash_bucket_size ; # Keep default value.
variables_hash_max_size ; # Keep default value. # Module ngx_stream_log_module
log_format stream '[$time_iso8601] '
'$remote_addr '
'$protocol '
'"Status-Code: $status" '
'"Bytes-Sent: $bytes_sent" '
'"Bytes-Reveived: $bytes_received" '
'"Session-Time: $session_time" '
'"Upstream-Addr: $upstream_addr" '
'"Upstream-Bytes-Sent: $upstream_bytes_sent" '
'"Upstream-Bytes-Received: $upstream_bytes_received" '
'"Upstream-Connect-Time: $upstream_connect_time"';
access_log /var/log/nginx/stream.acc stream;
error_log /var/log/nginx/stream.err;
open_log_file_cache max=; # Module ngx_stream_proxy_module
proxy_buffer_size 128k; # Keep default value.
proxy_connect_timeout 180s;
proxy_download_rate ; # Keep default value.
proxy_next_upstream on; # Keep default value.
proxy_next_upstream_timeout ; # Keep default value.
proxy_next_upstream_tries ; # Keep default value.
proxy_protocol off; # Enables the PROXY protocol for connections to a proxied server.
proxy_timeout 180s;
proxy_upload_rate ; # Keep default value. # Module ngx_stream_upstream_module include /etc/nginx/include/stream.upstream; #配置upstrean的路径
include /etc/nginx/conf.d/ngx_stream/Proxy/stream.conf.*; #限制访问upstream的路径

1.2 配置转发

[root@localhost ~]# vim /etc/nginx/conf.d/ngx_stream/Proxy/stream.conf.proxy10001

server {
# include conf.d/ngx_stream/Proxy/include/http.ipallow.; # Module ngx_stream_core_module
listen ; #监听80端口, # Module ngx_stream_log_module
access_log /var/log/nginx/stream.proxy..acc stream;
error_log /var/log/nginx/stream.proxy..err; # Module ngx_http_proxy_module
proxy_pass proxy10001; #转发
}

1.3 配置upstream的文件

[root@localhost ~]# vim /etc/nginx/include/stream.upstream

# Module ngx_stream_upstream_module
upstream proxy10001 {
server 45.77.246.61:;
}

1.4 重启nginx

[root@localhost ~]# nginx -s reload

[root@localhost ~]# netstat -ntlp |grep 8000

tcp               0.0.0.0:            0.0.0.0:*               LISTEN      /nginx: master 

关闭防火墙和selinx

1.5 客户端配置查看

查看IP

二 结合pacfile

写一个PAC file,可以使用http下载

2.1 把PAC file 放在nginx的一个访问目录下

[root@localhost html]# pwd

/usr/share/nginx/html

[root@localhost html]# ll

-rw-r--r--.  root root  Jun   : proxy10001.pac

2.2 配置文件

server {
# Module ngx_http_core_module
listen ;
# Module ngx_http_charset_module
charset utf-; # Module ngx_http_log_module
access_log /var/log/nginx/ngx_http/http.pacfiles.acc main;
error_log /var/log/nginx/ngx_http/http.pacfiles.err; location / {
expires ;
root /usr/share/nginx/html;
}
}

2.3 检测脚本

[root@localhost ~]# vim /etc/nginx/nginx.conf

查看

使用nginx的访问控制,控制pac文件可以被那些IP访问

2.4 从80口控制

[root@localhost ~]# vim /etc/nginx/conf.d/ngx_http/http.conf.pacfiles

server {
# Core functionality
include conf.d/ngx_http/include/http.ipallow.; #添加此配置
# Module ngx_http_core_module
listen ;
# Module ngx_http_charset_module
charset utf-; # Module ngx_http_log_module
access_log /var/log/nginx/ngx_http/http.pacfiles.acc main;
error_log /var/log/nginx/ngx_http/http.pacfiles.err; location / {
expires ;
root /usr/share/nginx/html;
}
}

[root@localhost ~]# vim /etc/nginx/conf.d/ngx_http/include/http.ipallow.10001

#allow 192.168.43.0/24;   #禁止本地访问
deny all;

查看IP

pacfile没有生效

[root@localhost ~]# vim /etc/nginx/conf.d/ngx_http/include/http.ipallow.10001

allow 192.168.43.0/24;   #允许本地访问
deny all;

但是,由于有缓存,导致每次在禁止访问后,但是依然可以访问到代理上

2.5 禁止浏览器缓存

配置

[root@localhost ~]# vim /etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections ;
} http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout ;
types_hash_max_size ;
add_header Cache-Control no-store; #禁止缓存
add_header Cache-Control no-cache; #禁止缓存
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/ngx_http/http.conf.*;
}

则每次更改权限后,不会有缓存,可立即生效!

使用PAC file结合ATS控制访问的更多相关文章

  1. linux 运维,代理,acl控制访问

    运维概述:运行 & 维护,Operation & MaintanceIT运维.业务运维.日常管理运维采用相关的方法.手段.技术.制度.流程和文档等,对IT运行环境.IT业务系统和IT运 ...

  2. Linux iptables 应用控制访问SSH服务

    Title:Linux iptables 应用控制访问SSH服务  --2012-02-23 17:51 今天用到了以前从来没有用到过的,iptables控制访问,只允许外部访问SSH服务(22号端口 ...

  3. asp.net core 使用 AccessControlHelper 控制访问权限

    asp.net core 使用 AccessControlHelper 控制访问权限 Intro 由于项目需要,需要在基于 asp.net mvc 的 Web 项目框架中做权限的控制,于是才有了这个权 ...

  4. vertx 异步编程指南 step7-保护和控制访问

    保护和控制访问与Vert.x很容易.在本节中,我们将: 从HTTP转移到HTTPS,以及 使用基于组的权限将用户身份验证添加到Web应用程序,以及 使用JSON Web令牌(JWT)控制对Web AP ...

  5. php控制访问人数的方法

    php控制访问人数的方法 <pre>//添加访问人数 public function addfangwen() { header("Content-type:text/html; ...

  6. python网络爬虫(三)requests库的13个控制访问参数及简单案例

    酱酱~小编又来啦~

  7. Identity Server 4资源拥有者密码认证控制访问API

    基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...

  8. Blazor组件自做十一 : File System Access 文件系统访问 组件

    Blazor File System Access 文件系统访问 组件 Web 应用程序与用户本地设备上的文件进行交互 File System Access API(以前称为 Native File ...

  9. VS2008 解决Unable to copy file 对路径的访问被拒绝。

    在VS2008 + WINDOWS 7 环境下重新生成解决方案时遇到以下问题 Unable to delete file "F:\XX.exe". 对路径"F:\XX.e ...

随机推荐

  1. ArcGIS 如何设置地图显示范围大小

    说来惭愧,学ArcGIS也已经有两年了.今天才知道原来ArcGIS是可以设置地图显示范围大小的 打开ArcMap,选择左边图例的图层(Layers) ,右键点击,选择属性(Properties..), ...

  2. c++第四次作业:继承

    继承与派生 基本概念和语法 概念 继承与派生是同一过程从不同角度看 保持已有的特性而构造新类的过程称为继承. 在已有类的基础上新增自己的特性而产生新类的过程为派生. 被继承的已有类称为基类(父类) 派 ...

  3. iOS 9整理

    WWDC 2015上那些酷酷的新内容(一) http://www.cocoachina.com/apple/20150611/12120.html

  4. python 数据的读取

  5. javascript简介 标签: javascript 2015-11-13 12:13 1712人阅读 评论(39)

    JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...

  6. git错误——Eclipse git commit错误;Committing changes has encountered a problem An Internal error occured

    背景 在使用eclipse时,使用git commit 提交代码时,出项如下错误 解决方法 在工程目录下找到 .git 文件夹 ,找到里面的 index.lock 文件,然后删掉这个文件就可以了,如下 ...

  7. [***]HZOJ 跳房子

    一道非常神仙的题. 算法一:对于20%的数据: 模拟,直接走K步,时间复杂度O(K) 算法二:对于40%的数据:走M*N步内必有一个循环节.直接走,找循环节,时间复杂度O(M*N) 正解大概有两种做法 ...

  8. 模板—中国剩余定理+拓展GCD

    int exgcd(int a,int b,int &x,int &y) { ) { x=,y=; return a; } int gcd=exgcd(b,a%b,x,y); int ...

  9. cp拷贝

    1 cp 拷贝.复制 NAME cp - copy files and directories SYNOPSIS cp [OPTION]... [-T] SOURCE DEST        -- c ...

  10. python命令之m参数

    在命令行中使用python时,python支持在其后面添加可选参数. python命令的可选参数有很多,例如:使用可选参数h可以查询python的帮助信息: 可选参数m 下面我们来说说python命令 ...