V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Yingc
V2EX  ›  NGINX

实在无果,求段 Nginx 过滤网址白名单配置

  •  
  •   Yingc · 2015-07-17 02:29:54 +08:00 via Android · 6266 次点击
    这是一个创建于 3177 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因分享了公共代理,导致那些人乱上一些不良网站,已经被发邮件投诉。请求各位帮帮忙,就是想允许列表里的网址通过访问,而不在允许列表里的就重定向到某页面,大概要允许上千个网址。
    真的很需要
    18 条回复    2015-07-17 18:30:59 +08:00
    Septembers
        1
    Septembers  
       2015-07-17 04:46:19 +08:00 via Android
    无条件重定向DNS流量到本地
    然后自建个DNS 需要的域就转发就可以了
    DreaMQ
        2
    DreaMQ  
       2015-07-17 04:48:10 +08:00
    简单的说,设置并强制指定(iptables之类)OpenDNS,然后去 opendns.com 注册你的服务器 IP 并过滤域名
    oott123
        3
    oott123  
       2015-07-17 08:23:06 +08:00 via Android
    squid/acl 呀
    FifiLyu
        4
    FifiLyu  
       2015-07-17 09:05:09 +08:00   ❤️ 1
    https://github.com/fifilyu/module-http-whitelist

    用 iptables 的 string 模块做一个白名单即可。
    Yingc
        5
    Yingc  
    OP
       2015-07-17 10:04:25 +08:00 via Android
    @FifiLyu 感谢
    Yingc
        6
    Yingc  
    OP
       2015-07-17 10:53:42 +08:00 via Android
    @FifiLyu 我的系统市Debian7无法编译文件
    Yingc
        7
    Yingc  
    OP
       2015-07-17 11:00:42 +08:00 via Android
    make -C /lib/modules/3.2.0-4-686-pae/build/ M=/root/module-http-whitelist modules
    make: *** /lib/modules/3.2.0-4-686-pae/build/: No such file or directory. Stop.
    make: *** [all] Error 2
    Yingc
        8
    Yingc  
    OP
       2015-07-17 11:30:35 +08:00 via Android
    debian下,无法安装 kernel-devel
    FifiLyu
        9
    FifiLyu  
       2015-07-17 11:42:53 +08:00
    @Yingc 我下午装一个debian7测试一下。 应该是依赖包没安装上的问题。

    你的情况建议先用 iptables string 模块。直接iptables即可满足你了。不需要用我这个Linux内核模块。

    用内核模块适合大量请求访问的情况使用
    Yingc
        10
    Yingc  
    OP
       2015-07-17 12:24:52 +08:00 via Android
    @FifiLyu 感觉你这个方便点,我尝试sudo apt-get install linux-headers-$(uname -r)后,虽然能编译但还是有错误,出来的东西无法加载,你是怎么安装这个的。
    yangxin0
        11
    yangxin0  
       2015-07-17 12:34:54 +08:00
    用openresty在acces阶段执行一个lua脚本即可,url 白明白可以存在redis或者mysql中
    FifiLyu
        12
    FifiLyu  
       2015-07-17 13:33:30 +08:00
    @Yingc 我在 Debian 7 上测试了,编译和运行ok。

    安装依赖包:
    sudo apt-get install linux-headers-`uname -r`
    FifiLyu
        13
    FifiLyu  
       2015-07-17 13:45:20 +08:00
    @Yingc

    初始化配置文件

    $ sudo mkdir /etc/http_whitelist
    $ sudo touch /etc/http_whitelist/host /etc/http_whitelist/network

    详情请看:

    初始化配置文件
    https://github.com/fifilyu/module-http-whitelist#%E5%88%9D%E5%A7%8B%E5%8C%96%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6
    Yingc
        14
    Yingc  
    OP
       2015-07-17 15:31:03 +08:00 via Android
    Yingc
        15
    Yingc  
    OP
       2015-07-17 15:31:53 +08:00 via Android
    @FifiLyu
    root@sf:~# sudo mkdir /etc/http_whitelist
    root@sf:~# sudo touch /etc/http_whitelist/host /etc/http_whitelist/network
    root@sf:~# sudo apt-get install linux-headers-'uname -r'
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Unable to locate package linux-headers-uname -r
    root@sf:~# cd module-http-whitelist
    root@sf:~/module-http-whitelist# sudo insmod http_whitelist.ko
    root@sf:~/module-http-whitelist# lsmod
    Module Size Used by
    http_whitelist 12997 0
    Yingc
        16
    Yingc  
    OP
       2015-07-17 15:32:29 +08:00 via Android
    原来是要先创建目录、文件。
    FifiLyu
        17
    FifiLyu  
       2015-07-17 17:20:50 +08:00
    sudo apt-get install linux-headers-`uname -r`

    uname -r 不是用单引号,而是反勾号。是键盘左边的数字“1”旁边的符号。
    Yingc
        18
    Yingc  
    OP
       2015-07-17 18:30:59 +08:00
    @FifiLyu 已经加载上了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2668 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:48 · PVG 23:48 · LAX 08:48 · JFK 11:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.