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

分享一个思路:使用 Nginx 搭建透明代理,轻松突破个别网站访问限制

  •  
  •   liad · 2014-11-06 16:43:07 +08:00 · 13163 次点击
    这是一个创建于 3705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一些网站只允许本国IP访问,如果在PC浏览器端可以通过修改请求头X-Forwarded-For来绕过验证,那么可以通过Nginx来搭建透明代理的轻量级方案,配合PAC文件来实现部分设备(通过设置代理)或全局(例如在路由器配置dnsmasq)轻松访问这些受限网站。

    配置非常简单
    server {
    resolver 8.8.8.8;
    listen 8086;
    location / {
    set $xff $proxy_add_x_forwarded_for;
    if ($http_host ~* 域名) {
    set $xff 允许的IP;
    }
    proxy_set_header X-Forwarded-For $xff;
    proxy_pass http://$http_host$request_uri;
    }
    }

    限定User-Agent的也可类似实现。

    目前我是通过这种方案在dd-wrt路由上搭建Nginx代理和web.py HTTP(s)服务,并在Apple TV上指定ProxyPACURL,来播放部分有限制或动态网址的在线视频流。
    15 条回复    2015-05-16 20:04:54 +08:00
    Starduster
        1
    Starduster  
       2014-11-06 17:17:24 +08:00 via iPhone
    赞一个,我打算这样试试搞学校教务处
    msg7086
        2
    msg7086  
       2014-11-06 17:37:14 +08:00 via iPhone   ❤️ 1
    典型的服务器配置错误。永远不能信任外来参数。
    wwek
        3
    wwek  
       2014-11-06 17:37:55 +08:00
    我一直在用 nginx做正向代理。
    就是不支持https可惜了·
    arnofeng
        4
    arnofeng  
       2014-11-06 18:28:59 +08:00 via Android
    那只对高校开放的图书馆不也是可行?
    brucebot
        5
    brucebot  
       2014-11-06 18:35:17 +08:00
    你的apple TV的设置可以分享一下吗?
    Showfom
        6
    Showfom  
       2014-11-06 18:38:51 +08:00
    @wwek sni proxy 嘛
    liad
        7
    liad  
    OP
       2014-11-06 20:28:37 +08:00
    Love4Taylor
        8
    Love4Taylor  
       2014-11-06 20:40:58 +08:00   ❤️ 1
    @wwek 你需要squid
    xiaou
        9
    xiaou  
       2014-11-06 20:56:35 +08:00
    我的apple TV已经变成纯airplay TV了,盒子大师看不了
    ryd994
        10
    ryd994  
       2014-11-06 21:28:13 +08:00
    既然你能控制PAC,那就是正向代理的应用场景了,用squid吧。当然,acl要认真学。
    takwai
        11
    takwai  
       2014-11-06 21:45:38 +08:00
    如果仅仅是修改请求头内容,Chrome 有扩展就支持了,随便对头增删改。

    正如 2 楼说的,永远不能信任外来参数。
    nil3
        12
    nil3  
       2014-11-06 22:18:19 +08:00
    不是计算机专业的,表示看不懂这些正向代理/反向代理之类。请问这类知识可以从哪里自学?比如看什么书?
    liad
        13
    liad  
    OP
       2014-11-06 22:58:32 +08:00
    @takwai 嗯,Chrome中我用ModHeader。不过我这里介绍的其实是充分利用路由器来搭建轻量级的代理服务,提供给不能修改随意修改头内容的设备使用。
    ksc010
        14
    ksc010  
       2014-11-07 00:33:32 +08:00
    nginx做代理的支不支持二级代理
    Marfal
        15
    Marfal  
       2015-05-16 20:04:53 +08:00
    @nil3 计算机专业不代表会去学习这些东西,代表着有更多时间学习这些东西,这个是和计算机网络有关的,可以看Computer Network(计算机网络),图解TCP/IP,再看看csdn关于正向代理,反向代理的文章,这些google百度都能找到。
    吐槽一下学校的计算机专业,没有交什么实际的东西,名义上是科班出身,可是老师讲的不好,也没有多少人听。也许是学校渣吧~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2237 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:11 · PVG 00:11 · LAX 08:11 · JFK 11:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.