Nginx 反向代理问题之二 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brando
V2EX    NGINX

Nginx 反向代理问题之二

  •  
  •   brando 2016-04-20 23:03:52 +08:00 5365 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。

    案例:
    访问地址: abc.hello.com
    反向代理到内网其中一台机器
    192.168.1.12:8080/abc/ 试了好多次, nginx 官网文档也没能看明白,我最后试出的结果是反向地址到了
    abc.hello.com/abc/

    请教大神解决方式,小生万分感谢!!!

    相关问题 http://v2ex.com/t/239976 [可以无视]

    34 条回复    2016-04-22 22:48:23 +08:00
    ianisme
        1
    ianisme  
       2016-04-20 23:06:20 +08:00
    可以看看我最近写的一篇关于反代的文章
    http://www.ianisme.com/it/2283.html
    fohnwind
        2
    fohnwind  
       2016-04-20 23:12:57 +08:00
    贴配置出来看看?我觉得是不是 proxy_pass 的时候末尾有没有`/`导致的
    YUX
        3
    YUX  
    PRO
       2016-04-20 23:14:49 +08:00
    @ianisme 申请个友链 已发申请邮件
    doyel
        4
    doyel  
       2016-04-20 23:19:46 +08:00
    @ianisme 除了帮助文档基本无视以外, NGINX 的确是现在最拔尖的静态服务器了。。。而且现在插件又多,玩法多。然后问题也来了,配置起来太蛋疼。。。
    just1
        5
    just1  
       2016-04-20 23:21:06 +08:00 via Android
    location /abc/ {
    proxy_pass http://xxx.com/;
    }
    记得加 /
    brando"
        6
    brando  
    OP
       2016-04-20 23:28:08 +08:00
    https://gist.github.com/Mutsuki/cdbdd200a85b74e61dbeb7d5e871fb8c

    贴出来了,不过我也同时在搜索 V2EX 内相同的帖子。
    DesignerSkyline
        7
    DesignerSkyline  
       2016-04-20 23:35:43 +08:00
    如果是只是简单使用反代可以试试配置文件更加好写的 caddy 就像这样:

    https://xxx.com {
    log /caddy/access.log
    gzip
    tls /root/startssl/fullchain.pem /root/startssl/privkey.pem
    proxy / localhost:port {
    policy round_robin##这是负载均衡使用的类型
    proxy_header Host xxx.com
    proxy_header X-Real-IP 127.0.0.1
    proxy_header X-Forwarded-Proto https
    websocket
    }
    }
    ianisme
        8
    ianisme  
       2016-04-20 23:41:25 +08:00
    @just1 楼主说的貌似不是这个斜杠的问题 http://dmouse.iteye.com/blog/1880474
    XiaoxiaoPu
        9
    XiaoxiaoPu  
       2016-04-20 23:43:24 +08:00
    试试下面的

    server
    {
    listen 80;
    server_name abc.hello.com;

    location / {
    rewrite ^/(.*)$ /abc/$1 break;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.1.12:8080/;
    }
    access_log /var/log/nginx/abc_access.log;
    error_log /var/log/nginx/abc_error.log;
    }
    brando
        10
    brando  
    OP
       2016-04-20 23:56:34 +08:00
    @XiaoxiaoPu 关于 rewrite 我也想到了,但不知道怎么写,用了您的方式还是我的那个结果,跳回到了 http://abc.hello.com/abc/
    kn007
        11
    kn007  
       2016-04-20 23:58:47 +08:00
    有这么麻烦么?在外面现在,略微改了下你提供的代码,你看看返回的结果。。

    server
    {
    listen 80;
    server_name abc.hello.com;

    location /{
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.1.12:8080/abc/;

    }
    access_log /var/log/nginx/abc_access.log;
    error_log /var/log/nginx/abc_error.log;
    }
    brando
        12
    brando  
    OP
       2016-04-21 00:04:10 +08:00
    @kn007 感谢您在路上也在回复,不过您的配置我早就试过了,不行。还是返回第一个结果。
    访问 http://abc.hello.com 之后返回结果是 http://abc.hello.com/abc/
    XiaoxiaoPu
        13
    XiaoxiaoPu  
       2016-04-21 00:07:19 +08:00
    @brando 我在反代 Transmission 的 Web 界面时这么写是可以用的。会不会是你的应用跳转的?比如 302 ,前端 js 跳转,你可以执行 curl -vv http://abc.hello.com/ 看一下。
    kn007
        14
    kn007  
       2016-04-21 00:09:29 +08:00
    @brando 你确信你照做也不行?

    刚到家,本地环境 test 通过。
    kn007
        15
    kn007  
       2016-04-21 00:10:15 +08:00
    @brando 你 abc 下什么应用,你单纯弄个 index.html ,写个 ok 在里边。其他的先不放试试。
    kn007
        16
    kn007  
       2016-04-21 00:13:19 +08:00


    ianisme
        17
    ianisme  
       2016-04-21 00:13:43 +08:00
    upstream abc.hello.com {
    server 192.168.1.12:8080;
    }

    server{
    listen 80;
    server_name abc.hello.com;
    location / {
    proxy_pass http://abc.hello.com;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }

    # 你试试这样写
    ianisme
        18
    ianisme  
       2016-04-21 00:15:10 +08:00
    访问 http://abc.hello.com/abc/ 看看是不是就是 192.168.1.12:8080/abc/
    kn007
        19
    kn007  
       2016-04-21 00:15:17 +08:00
    @ianisme 他要到目录 abc 。。。
    ianisme
        20
    ianisme  
       2016-04-21 00:16:26 +08:00
    @kn007 额 不好意思
    kn007
        21
    kn007  
       2016-04-21 00:16:50 +08:00
    @ianisme 哦,你想让楼主试试。。

    理论上
    abc.hello.com -> 192.168.1.12:8080/abc/
    这种应该不麻烦。
    kn007
        22
    kn007  
       2016-04-21 00:17:29 +08:00
    @ianisme 莫非我理解错了, 23333 ,最近怎么样?
    ianisme
        23
    ianisme  
       2016-04-21 00:20:13 +08:00
    @kn007 楼主已经没回话了。话说 V2EX 圈子好小,好几次碰到你 O(∩_∩)O 哈哈~
    kn007
        24
    kn007  
       2016-04-21 00:22:22 +08:00
    @ianisme 估计楼主睡着了。
    相对活跃吧,已经被几个好友说我整天泡 v2 时间过长。
    ianisme
        25
    ianisme  
       2016-04-21 00:23:03 +08:00
    @kn007 你的出镜率好高
    kn007
        26
    kn007  
       2016-04-21 00:23:36 +08:00
    @ianisme 主要是头像黑麻麻。。哈哈哈
    zcw159357
        27
    zcw159357  
       2016-04-21 00:47:19 +08:00   1
    server
    {
    listen 80;
    server_name abc.hello.com;

    location / {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.1.12:8080/abc/;

    }

    location /abc/ {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.1.12:8080/abc/;
    rewrite "^/abc/(.*)" /$1 permanent;
    }

    access_log /var/log/nginx/abc_access.log;
    error_log /var/log/nginx/abc_error.log;
    }

    试下这个 感觉是你 /abc/ 那个站点里的 url 都写了 /abc/aa.htm 这种 搞个重定向 应该就可以不会出现 /abc/了
    brando
        28
    brando  
    OP
       2016-04-21 01:05:33 +08:00
    楼主去画拓扑图去了。
    brando
        29
    brando  
    OP
       2016-04-21 01:31:47 +08:00
    27 楼是正解!

    @zcw159357 谢谢您的 config ,稍改配置也解决了我的 500 的错误!
    另外也谢谢其他的朋友们!!!这么晚了还都在奋斗~~
    zcw159357
        30
    zcw159357  
       2016-04-21 02:05:58 +08:00
    @brando 咦 啥 500 错误....居然还有这种效果么...
    brando
        31
    brando  
    OP
       2016-04-21 02:19:15 +08:00
    rewrite "^/abc/(.*)" /$1 permanent;
    其实是我写的路径的问题, cookies 提交不正确,不是您的写法配置问题: D
    xiaoz
        32
    xiaoz  
       2016-04-21 09:07:36 +08:00
    @XiaoxiaoPu 正解,楼主可以试试。
    brando
        33
    brando  
    OP
       2016-04-22 12:38:54 +08:00
    困惑了,今天发现还是跳回到了 abc.hello.com/abc/
    brando
        34
    brando  
    OP
       2016-04-22 22:48:23 +08:00
    修改之后解决重定向,但又发现 Jessionid 获取有问题,天,,,都什么问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1088 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 17:55 PVG 01:55 LAX 09:55 JFK 12:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86