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

效果如下

一、使用nginx端口转发

在机器192.168.43.85使用yum安装nginx

1.1 配置upstream

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

  1. user nginx;
  2. worker_processes auto;
  3. error_log /var/log/nginx/error.log;
  4. pid /run/nginx.pid;
  5. events {
  6. worker_connections ;
  7. }
  8.  
  9. http {
  10. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  11. '$status $body_bytes_sent "$http_referer" '
  12. '"$http_user_agent" "$http_x_forwarded_for"';
  13.  
  14. access_log /var/log/nginx/access.log main;
  15.  
  16. sendfile on;
  17. tcp_nopush on;
  18. tcp_nodelay on;
  19. keepalive_timeout ;
  20. types_hash_max_size ;
  21.  
  22. include /etc/nginx/mime.types;
  23. default_type application/octet-stream;
  24. include /etc/nginx/conf.d/ngx_http/http.conf.*;
  25. }
  26.  
  27. stream {
  28. # Module ngx_stream_core_module
  29. preread_buffer_size 128k; # Keep default value.
  30. preread_timeout 180s;
  31. proxy_protocol_timeout 180s;
  32. tcp_nodelay on; # Enables the use of the TCP_NODELAY option.
  33. variables_hash_bucket_size ; # Keep default value.
  34. variables_hash_max_size ; # Keep default value.
  35.  
  36. # Module ngx_stream_log_module
  37. log_format stream '[$time_iso8601] '
  38. '$remote_addr '
  39. '$protocol '
  40. '"Status-Code: $status" '
  41. '"Bytes-Sent: $bytes_sent" '
  42. '"Bytes-Reveived: $bytes_received" '
  43. '"Session-Time: $session_time" '
  44. '"Upstream-Addr: $upstream_addr" '
  45. '"Upstream-Bytes-Sent: $upstream_bytes_sent" '
  46. '"Upstream-Bytes-Received: $upstream_bytes_received" '
  47. '"Upstream-Connect-Time: $upstream_connect_time"';
  48. access_log /var/log/nginx/stream.acc stream;
  49. error_log /var/log/nginx/stream.err;
  50. open_log_file_cache max=;
  51.  
  52. # Module ngx_stream_proxy_module
  53. proxy_buffer_size 128k; # Keep default value.
  54. proxy_connect_timeout 180s;
  55. proxy_download_rate ; # Keep default value.
  56. proxy_next_upstream on; # Keep default value.
  57. proxy_next_upstream_timeout ; # Keep default value.
  58. proxy_next_upstream_tries ; # Keep default value.
  59. proxy_protocol off; # Enables the PROXY protocol for connections to a proxied server.
  60. proxy_timeout 180s;
  61. proxy_upload_rate ; # Keep default value.
  62.  
  63. # Module ngx_stream_upstream_module
  64.  
  65. include /etc/nginx/include/stream.upstream; #配置upstrean的路径
  66. 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

  1. server {
  2. # include conf.d/ngx_stream/Proxy/include/http.ipallow.;
  3.  
  4. # Module ngx_stream_core_module
  5. listen ; #监听80端口,
  6.  
  7. # Module ngx_stream_log_module
  8. access_log /var/log/nginx/stream.proxy..acc stream;
  9. error_log /var/log/nginx/stream.proxy..err;
  10.  
  11. # Module ngx_http_proxy_module
  12. proxy_pass proxy10001; #转发
  13. }

1.3 配置upstream的文件

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

  1. # Module ngx_stream_upstream_module
  2. upstream proxy10001 {
  3. server 45.77.246.61:;
  4. }

1.4 重启nginx

[root@localhost ~]# nginx -s reload

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

  1. 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

  1. /usr/share/nginx/html

[root@localhost html]# ll

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

2.2 配置文件

  1. server {
  2. # Module ngx_http_core_module
  3. listen ;
  4. # Module ngx_http_charset_module
  5. charset utf-;
  6.  
  7. # Module ngx_http_log_module
  8. access_log /var/log/nginx/ngx_http/http.pacfiles.acc main;
  9. error_log /var/log/nginx/ngx_http/http.pacfiles.err;
  10.  
  11. location / {
  12. expires ;
  13. root /usr/share/nginx/html;
  14. }
  15. }

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

  1. server {
  2. # Core functionality
  3. include conf.d/ngx_http/include/http.ipallow.; #添加此配置
  4. # Module ngx_http_core_module
  5. listen ;
  6. # Module ngx_http_charset_module
  7. charset utf-;
  8.  
  9. # Module ngx_http_log_module
  10. access_log /var/log/nginx/ngx_http/http.pacfiles.acc main;
  11. error_log /var/log/nginx/ngx_http/http.pacfiles.err;
  12.  
  13. location / {
  14. expires ;
  15. root /usr/share/nginx/html;
  16. }
  17. }

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

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

查看IP

pacfile没有生效

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

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

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

2.5 禁止浏览器缓存

配置

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

  1. user nginx;
  2. worker_processes auto;
  3. error_log /var/log/nginx/error.log;
  4. pid /run/nginx.pid;
  5. events {
  6. worker_connections ;
  7. }
  8.  
  9. http {
  10. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  11. '$status $body_bytes_sent "$http_referer" '
  12. '"$http_user_agent" "$http_x_forwarded_for"';
  13.  
  14. access_log /var/log/nginx/access.log main;
  15.  
  16. sendfile on;
  17. tcp_nopush on;
  18. tcp_nodelay on;
  19. keepalive_timeout ;
  20. types_hash_max_size ;
  21. add_header Cache-Control no-store; #禁止缓存
  22. add_header Cache-Control no-cache; #禁止缓存
  23. include /etc/nginx/mime.types;
  24. default_type application/octet-stream;
  25. include /etc/nginx/conf.d/ngx_http/http.conf.*;
  26. }

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

使用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. sql select时增加常量列

    阅读更多 string sql="select a,b,'常量' as c from table" 注:单引号' ' 很重要,否则编译时会把其看成查询参数,从而提示参数未指定错误. ...

  2. Python基础:20类的定制

    类中有一些可自定义的特殊方法,它们中的一些有预定义的默认行为,而其它一些则没有,留到需要的时候去实现.这些特殊方法是Python中用来扩充类的强有力的方式.它们可以实现模拟标准类型和重载操作符等.比如 ...

  3. oracle 需要当心的WHERE子句

    某些SELECT 语句中的WHERE子句不使用索引. 这里有一些例子. 在下面的例子里, ‘!=’ 将不使用索引. 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. 不使用索引: ...

  4. xshell评估期已过怎么办

    重新下载更新即可,不要看到英文一脸懵逼,直接在页面中有红色*号的地方输入个人信息,licensetype 必须选 Home and School use(家庭和个人使用),最主要的是输入邮箱(必须是个 ...

  5. jieba分词工具的使用方法

    作为我这样的萌新,python代码的第一步是:#coding=utf-8 环境:python3.5+jieba0.39 一.jieba包安装方法: 方法1:使用conda安装 conda instal ...

  6. tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?

    当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数.那么,它到 ...

  7. linux ioctl 系统调用预定义的命令

    尽管 ioctl 系统调用最常用来作用于设备, 内核能识别几个命令. 注意这些命令, 当用 到你的设备时, 在你自己的文件操作被调用之前被解码. 因此, 如果你选择相同的号给一 个你的 ioctl 命 ...

  8. 2018-8-10-win10-uwp-商业游戏-1.2.1

    title author date CreateTime categories win10 uwp 商业游戏 1.2.1 lindexi 2018-08-10 19:16:50 +0800 2018- ...

  9. C# 对 byte 数组进行模式搜索

    本文告诉大家几个方法从 byte 数组找到对应的相同序列的数组 最简单的方法是进行数值判断,但是代码最少是使用Linq ,效率比较高是使用 Boyer-Moore 算法,下面就告诉大家几个算法的代码 ...

  10. 【p082】排座椅

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了 ...