V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Amit
V2EX  ›  问与答

反向代理访问被 q 资源是何原理

  •  
  •   Amit · 2015-04-20 17:58:21 +08:00 · 5120 次点击
    这是一个创建于 3510 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为众所周知的原因dropbox外链无法使用,后来了解到可以通过反向代理可以访问被墙资源。
    server{
    listen 80;
    server_name img.xxx.com;

    location / { 
        proxy_pass https://dl.dropboxusercontent.com/u/xxxxxxxx/; 
        proxy_redirect off; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    }
    

    }
    在ngnix上使用上面的配置实现了墙内访问,但对反向代理的理解还有点疑问。
    原本以为反向代理只是做了一次跳转,可以将不同服务器上的资源映射到一处,顺便美化一下url。
    现在看来是我想简单了,即使ip被墙反代一样有效,不像修改本地hosts文件,ip被墙后就没办法了。反代应该有一个从dl.dropboxusercontent.com获取真实资源的过程,这个功能是nginx来执行的吧。网上配置的方法挺多,但都没讲清楚原理(好吧,作为一个小白我承认好多解释我看不懂。。),网上哪里有系统一点的资料吗?
    ngnix重写url也可以起到美化url的目的吧,但是这个做不到翻q吧。
    能不能通过url重写将img.xxx.com转换成www.xxx.com/image/这样的格式呢?这样看起来习惯一些。

    PS:话说零几年的时候就创建了dropbox账号,但也没怎么用,后来又被墙,国内用不了就把账号删除了。最近新注册了一个菜发现已经不支持public外链了,我那个郁闷啊。后来发现淘宝有老账号卖,然后就买了一个,神奇的淘宝啊。

    11 条回复    2015-04-21 12:08:34 +08:00
    Marfal
        1
    Marfal  
       2015-04-20 18:09:31 +08:00
    同为小白,我的理解是nginx反代其实是通过nginx服务器向dropbox请求资源的,如果服务器在墙外的话,是可以起到FQ的效果,缓存的话可以减去nginx向dropbox请求资源的环节来加速访问,对一些博客之类内容变动较小的开启缓存会比较好。
    Amit
        2
    Amit  
    OP
       2015-04-20 18:14:46 +08:00
    又出现一个问题,因为原来的ssl证书不包括img.xxx.com这个二级域名,所以网站内外链dropbox的图片文件会出现ssl不安全提示,浏览器地址栏的绿色小锁变灰色了⊙﹏⊙b汗
    mcone
        3
    mcone  
       2015-04-20 18:16:17 +08:00
    别的没仔细看,针对ps里面的内容,你新建的号是可以支持外链的,只是没有老号的public文件夹罢了。
    在你share之后,修改一下一部分域名就可以完美外链了(相信你多看两个例子的话会知道怎么改的)

    恭喜你很可能被淘宝奸商给忽悠了
    wbbim
        4
    wbbim  
       2015-04-20 19:28:41 +08:00
    NewYear
        5
    NewYear  
       2015-04-20 21:43:03 +08:00
    原理就是,你的服务器nginx去下载dropbox的资源,然后传输给浏览器。

    用www的子目录image可以吗,当然可以,没记错的话直接修改location / { 这行成为location /image/ 和

    把location /image/ {
    proxy_pass https://dl.dropboxusercontent.com/u/xxxxxxxx/;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }放入你的www的规则里面,放前面

    另外提醒你,最好做下缓存。
    NewYear
        6
    NewYear  
       2015-04-21 01:04:10 +08:00
    @mcone 发现理解能力变弱了好多,阅读能力也弱了好多,明明你说了修改下域名……而我还在你楼下的帖子里反复对比。

    其实那个修改域名没有public来得爽吧。
    xiaogui
        7
    xiaogui  
       2015-04-21 02:20:45 +08:00
    Dropbox 一直支持 public 外链的
    orzfly
        8
    orzfly  
       2015-04-21 02:23:14 +08:00   ❤️ 1
    Amit
        9
    Amit  
    OP
       2015-04-21 09:22:49 +08:00
    @mcone
    @NewYear
    嗯 修改链接是可以外链,但是比较麻烦,而且这不是官方支持飞方式,怕哪天回处问题。
    NewYear
        10
    NewYear  
       2015-04-21 09:47:55 +08:00
    @orzfly 好东西。
    mcone
        11
    mcone  
       2015-04-21 12:08:34 +08:00   ❤️ 1
    @Amit 官方是知道的,另外官方还有文档教你加上?dl=1

    另外,建议你看看这个页面,关于public 文件夹的说明,以后不要再被某宝奸商忽悠了https://www.dropbox.com/en/help/201
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.