VeryNginx 发布新版本,现已支持动态反向代理 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
AlexaZhou
V2EX    分享创造

VeryNginx 发布新版本,现已支持动态反向代理

  •  2
     
  •   AlexaZhou
    alexazhou 2016-05-02 10:41:44 +08:00 13141 次点击
    这是一个创建于 3454 天前的主题,其中的信息可能已经有所发展或是发生改变。

    好吧,这次是个大更新。

    如果不知道 VeryNginx 是什么,那么请看这里 /t/255284

    本次更新主要有下面几点:

    • 加入了动态配置反向代理的功能

    现在可以直接在 web 界面上配置反向代理,不需要修改 nginx.conf ,不需要重启 nginx 即可生效。并且可以根据复杂的规则选择代理到哪。

    • 加入了动态配置静态文件目录的支持

    可以对满足特定条件的请求,使用不同的 root 路径

    • 加入了请求频率限制功能

    可以对满足特定条件的请求进行计数,指定时间内最多只允许指定次数的请求,超出次数则进行拦截。并支持对不同的 IP , URL 进行分别统计

    • 改进了之前的目录结构以及集成方式

    和 Nginx 集成更简单了,并且提供了一键安装脚本

    另外这次更新之后,通过 VeryNginx 反向代理某站可能是一种新玩法了。

    祝大家玩的开心~

    第 1 条附言    2016-05-30 13:23:26 +08:00
    大家使用中如果有建议或者问题的,请到 Github 上提出 Issue ,我会及时处理。

    And PR welcome !
    68 条回复    2018-05-07 06:52:16 +08:00
    tSQghkfhTtQt9mtd
        1
    tSQghkfhTtQt9mtd  
       2016-05-02 11:34:15 +08:00 via Android   1
    吼啊,你搞的这个更新啊, Excited! 我已经闷声用了一段时间了!非常不错!
    yov123456
        2
    yov123456  
       2016-05-02 11:36:40 +08:00 via iPhone   1
    好用!
    holyghost
        3
    holyghost  
       2016-05-02 11:36:42 +08:00
    @liwanglin12 请问是生产环境吗
    tSQghkfhTtQt9mtd
        4
    tSQghkfhTtQt9mtd  
       2016-05-02 11:41:33 +08:00 via Android
    @holyghost 唔。。算是吧。。
    毕竟咱只有个人站喽┑( ̄Д  ̄)┍
    AlexaZhou
        5
    AlexaZhou  
    OP
       2016-05-02 11:54:08 +08:00
    @liwanglin12 @yov123456

    感谢支持!
    Lxxyx
        6
    Lxxyx  
       2016-05-02 11:55:34 +08:00
    好东西啊,话说我在服务器上开一个应用。地址是 www.xxxx.com:3000 ,那么能通过 VeryNginx 设置反向代理,实现访问 app.xxxx.com 等于访问 www.xxxx.com:3000 的效果吗?
    AlexaZhou
        7
    AlexaZhou  
    OP
       2016-05-02 11:59:54 +08:00   1
    当然可以


    先配置一个 Matcher : host=app.xxxx.com ,用来提取出来所有访问 host 为 **app.xxxx.com** 的请求

    然后配置 Proxy Pass 把这个请求转发到 127.0.0.1:3000 就可以了
    Lxxyx
        8
    Lxxyx  
       2016-05-02 12:02:43 +08:00   1
    @AlexaZhou 已经实现了,正好用的是你说的方式,这个感觉很好用啊。前端部署 Node.js 应用时,能省很多时间来着。
    AlexaZhou
        9
    AlexaZhou  
    OP
       2016-05-02 12:08:19 +08:00
    @Lxxyx

    真棒,一下就配置好了
    Lxxyx
        10
    Lxxyx  
       2016-05-02 12:45:11 +08:00   1
    已经在自己小轮子的 readme 里添加 VeryNginx 为推荐配置了。
    https://github.com/Lxxyx/koa2-easy
    AlexaZhou
        11
    AlexaZhou  
    OP
       2016-05-02 12:51:05 +08:00
    @Lxxyx

    wow! 多谢,我感受到很大的鼓励。
    CMGS
        12
    CMGS  
       2016-05-02 13:23:08 +08:00   1
    = =竟然用上了 balancer 的特性,老实讲 openresty 这个特性我个人是存疑的,因为会完全摈弃了 nginx 自带的几个 balance 算法,比如 last conn 。纯粹用 lua 自行实现的话,最简单的应该就是 random 了,所以我们自己的 elb 想了想去还是用了 tengine 里面包含的 dyups 这个插件,反正也是 lua 兼容。。
    AlexaZhou
        13
    AlexaZhou  
    OP
       2016-05-02 13:44:26 +08:00
    balancer 特性是比较新,不过我仔细测试过,应该没啥问题。这个特性主要是提供了一种方法,在请求到来时再计算出要反向代理的后端地址,让动态转发成为了可能。

    Balancer 其实就相当于绕开了 Nginx 原来的 balancer 那一套,提供了更多可能性的方法。当然如果使用了 balancer 来动态提供后端地址,负载均衡算法也要重新写一遍。

    drupes 提供了一种不重启情况下修改 upstream 的方式,一些情况下会很好用。不过 balancer 特性能做的事情会更多一些。
    qcloud
        14
    qcloud  
       2016-05-02 16:01:44 +08:00   1
    已经编译准备提交至 AMH ,多谢这么牛逼的东西
    AlexaZhou
        15
    AlexaZhou  
    OP
       2016-05-02 16:13:46 +08:00
    @qcloud

    多谢夸奖啦~
    可否科普一下 AMH ?
    qcloud
        16
    qcloud  
       2016-05-02 16:18:43 +08:00
    AlexaZhou
        17
    AlexaZhou  
    OP
       2016-05-02 16:26:06 +08:00
    @qcloud

    看到啦,感觉蛮有用的
    qcloud
        18
    qcloud  
       2016-05-02 16:26:55 +08:00   1
    @AlexaZhou 很大的用户量哦,做成模块,提供用户下载
    kdsex
        19
    kdsex  
       2016-05-02 16:33:26 +08:00 via iPhone
    mark 支持
    AlexaZhou
        20
    AlexaZhou  
    OP
       2016-05-02 16:34:19 +08:00
    太感谢支持啦
    common07
        21
    common07  
       2016-05-02 19:02:26 +08:00
    @AlexaZhou 不知道有没有打包好的 docker 镜像?
    Syc
        22
    Syc  
       2016-05-02 19:09:10 +08:00 via Android
    火钳刘明
    kn007
        23
    kn007  
       2016-05-02 19:26:18 +08:00
    支持。
    bazingaterry
        24
    bazingaterry  
       2016-05-02 19:27:00 +08:00 via iPhone
    支持!迟点的小项目用上试试。
    YUX
        25
    YUX  
    PRO
       2016-05-02 19:44:52 +08:00
    求个 Docker image 版
    qcloud
        26
    qcloud  
       2016-05-02 19:52:51 +08:00   1
    hljjhb
        27
    hljjhb  
       2016-05-02 19:54:05 +08:00
    你这个项目啊…… excited !
    xuhaoyangx
        28
    xuhaoyangx  
       2016-05-02 20:45:39 +08:00
    反代基础上加上 sub_filter 就好了
    AlexaZhou
        29
    AlexaZhou  
    OP
       2016-05-02 21:19:03 +08:00 via iPhone
    @qcloud

    从图上看是缺少 gcc 工具链,所以没办法编译。装上 gcc 就好了
    lutla
        30
    lutla  
       2016-05-03 00:33:54 +08:00
    excited !
    dzxx36gyy
        31
    dzxx36gyy  
       2016-05-03 03:05:07 +08:00 via Android   1
    @qcloud 今天还给 amh 发了工单建议添加这个(:3,感觉不能在棒
    dzxx36gyy
        32
    dzxx36gyy  
       2016-05-03 03:12:41 +08:00 via Android   1
    @AlexaZhou 请问下 lua-resty-core 是怎么装的……我今天试了下是修改 makefile 中 include 为 luajit 目录然后直接 make;make install 了,貌似成功,但是不知道为啥插入 server 段的 conf 之后就 502 了。(我用的是 0.3 还没出 release 之前的版本 master 分之,失败之后换回 0.2.1 就正常了,不知道是不是因为 0.3.0 出 release 之前的版本有问题……还是我 lua-resty-core 安装方式不对
    dzxx36gyy
        33
    dzxx36gyy  
       2016-05-03 03:13:57 +08:00 via Android
    @qcloud 话说不试试直接基于 nginx-1.10.0 来改么,我自己就是这么干的……修改了下模块的编译参数
    qcloud
        34
    qcloud  
       2016-05-03 10:49:00 +08:00
    装个这玩意咋就这么难呢 - -
    https://gyazo.com/41ee1349e9bf43562b4a2dd6d41e85c7
    qcloud
        35
    qcloud  
       2016-05-03 10:49:28 +08:00
    @dzxx36gyy 发工单也不会集成了,只有自己搞,他会告诉你 nginx 系列就行了
    AlexaZhou
        36
    AlexaZhou  
    OP
       2016-05-03 12:08:36 +08:00
    @qcloud

    这是因为编译 Nginx 时,没找到 PCRE 源码, Nginx 用 PCRE 库进行 Rewrite 。。。

    如果是 fedora 的话,可以执行:

    yum install pcre pcre-devel

    这样把 PCRE 依赖装上就好啦

    如果是其它系统的话,可能包的名字不完全一样,需要自己看一下

    Ps :编译 Nginx 还需要 openssl ,如果没有的话可以通过下面的命令安装

    yum install openssl-devel

    我回头会写一个文档来把这些都列出来
    qcloud
        37
    qcloud  
       2016-05-03 12:17:54 +08:00
    @AlexaZhou 麻烦了
    AlexaZhou
        38
    AlexaZhou  
    OP
       2016-05-03 14:18:09 +08:00
    @dzxx36gyy

    我尝试了手动使用 lua-nginx-module 来安装,我发现并不是缺少了 lua-resty-core ,而是缺少了 lua-resty-dns 这个组件( 这个组件目前没有包含在 lua-resty-core 中 )。老版本没有问题是因为没有使用到这个库。

    另外经过我确认, lua-nginx-module 已经集成了 lua-resty-core 了,所以这个并不需要手动安装。为了解决这个问题,我把 lua-resty-dns 集成到 VeryNginx 中了, wiki 我也更新了。

    你更新代码再运行一下应该就可以了。
    dzxx36gyy
        39
    dzxx36gyy  
       2016-05-03 14:21:29 +08:00
    @AlexaZhou 感谢,我晚上再试试
    GPU
        40
    GPU  
       2016-05-03 14:32:52 +08:00
    一直在用 ,没更新前总感觉有点像花瓶 ,毕竟我用不上 match 这些功能。
    lzsadam
        41
    lzsadam  
       2016-05-03 16:16:58 +08:00
    安装配置好登录 502 什么问题?
    用的是
    https://blog.linuxeye.com/31.html
    的 OpenResty
    看他的源码 openresty.sh 里面只少了一个编译的参数,又加上重新编译了一次
    环境应该是 OK 的
    AlexaZhou
        42
    AlexaZhou  
    OP
       2016-05-03 17:24:08 +08:00
    @lzsadam

    可以访问一下页面,看看 nginx 的 error log 中有没有报错信息
    lzsadam
        43
    lzsadam  
       2016-05-03 17:33:24 +08:00
    @AlexaZhou 404 了,没报错,没改默认目录
    就是给了个域名,指向 /opt/verynginx/verynginx/dashboard
    lzsadam
        44
    lzsadam  
       2016-05-03 17:33:57 +08:00
    其余配置也没有任何变动
    lzsadam
        45
    lzsadam  
       2016-05-03 17:45:09 +08:00
    @AlexaZhou

    这是我的 nginx 配置

    server {
    listen 80;
    server_name verynginx.xxx.com;
    access_log off;
    root /opt/verynginx/verynginx/dashboard;

    include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;

    location / {
    index index.html index.htm;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    }
    AlexaZhou
        46
    AlexaZhou  
    OP
       2016-05-03 17:46:05 +08:00
    @lzsadam

    呃,好吧,看来是安装的方式不对。

    VeryNginx 和 Nginx 集成并不是配置一个虚拟主机就可以的,完整的看一下安装文档吧,上面有怎么用脚本安装,也有怎么使用自己编译 Nginx 的说明。如果不想折腾的话,建议直接通过脚本安装吧
    lzsadam
        47
    lzsadam  
       2016-05-03 17:48:06 +08:00
    @AlexaZhou 是看安装文档装的

    只装了 verynginx 没装 openresty
    也按照配置加了 3 个 conf 到指定位置
    nginx 配了个域名
    其余没改任何东西
    AlexaZhou
        48
    AlexaZhou  
    OP
       2016-05-03 17:53:36 +08:00
    你上面贴出来的配置只有一个 include ,缺少了其它的。如果是自己编译的 Nginx ,直接使用仓库目录下面的 nginx.conf ,应该就可以跑起来了,可以用那个来 debug 。

    不需要配置 /root /opt/verynginx/verynginx/dashboard;
    也不需要配置 server name 啥的
    AlexaZhou
        49
    AlexaZhou  
    OP
       2016-05-03 18:05:13 +08:00
    @lzsadam

    呃,不知道你搞定了没有,如果有困难的话,也可以给我发邮件 [email protected] ,告诉我微信,我加你解决一下
    lzsadam
        50
    lzsadam  
       2016-05-03 18:19:52 +08:00
    @AlexaZhou 已经邮件你了,没有搞定。
    guonning
        51
    guonning  
       2016-05-03 21:16:06 +08:00 via iPhone
    也是没搞定,期待完整说明
    dzxx36gyy
        52
    dzxx36gyy  
       2016-05-04 19:03:48 +08:00
    @AlexaZhou
    _(:з」∠)_我 500 了
    dzxx36gyy
        53
    dzxx36gyy  
       2016-05-04 19:29:26 +08:00
    @AlexaZhou 哎呀,貌似是 release 里面的没更新, gitclone 最新的 master 正常了
    henbf
        54
    henbf  
       2016-05-06 16:50:41 +08:00
    安装好了之后还要修改一下 nginx.conf 里面的用户,我修改成 www-data 就没问题了
    Lxxyx
        55
    Lxxyx  
       2016-05-07 00:04:49 +08:00 via Android
    开启 gzip 是得自己改 nginx.conf 还是?
    AlexaZhou
        56
    AlexaZhou  
    OP
       2016-05-07 10:39:05 +08:00
    @Lxxyx

    需要自己在 nginx.conf 中添加
    unkn369
        57
    unkn369  
       2016-05-22 13:13:25 +08:00
    @AlexaZhou 反代 *.abc.com abc.com 到 127.0.0.1 Matcher 怎么写?
    AlexaZhou
        58
    AlexaZhou  
    OP
       2016-05-22 13:45:46 +08:00
    Matcher 这样写: host ≈ .*abc\.com

    反向代理怎么配置可以参考 github 上的在线 demo ,那个 demo 是把所有的请求反向代理到 localhost 的 tornado 上去,参考修改就可以啦
    AlexaZhou
        59
    AlexaZhou  
    OP
       2016-05-22 13:54:15 +08:00
    @unkn369

    刚忘记 @ 了
    unkn369
        60
    unkn369  
       2016-05-27 21:04:41 +08:00
    @AlexaZhou 添加 Up Stream 点 save 报错 Ajax request failed [status code = 200]
    AlexaZhou
        61
    AlexaZhou  
    OP
       2016-05-27 23:18:52 +08:00
    unkn369
        62
    unkn369  
       2016-05-30 11:53:20 +08:00   1
    @AlexaZhou 已经参照这个说明设置不行, Up Stream 和 Proxy Pass 之前已经添加成功两对记录, 现在要添加第三条记录, 保存时一直报错 Ajax request failed [status code = 200]
    AlexaZhou
        63
    AlexaZhou  
    OP
       2016-05-30 13:21:26 +08:00   1
    @unkn369

    呃,还可以看看 nginx error.log ,看有没有什么内容。另外请移步去 Github 上提 Issue 吧,尽量多说明一些情况,我好帮你解决。
    ZiShuo
        64
    ZiShuo  
       2016-06-25 20:04:37 +08:00 via Android
    @qcloud AMH 官方现在只顾着赚钱了,我很早就不用他们的插件了,话说我已经搞成 AMH 面板的插件了。后台一键安装,一键卸载!
    qcloud
        65
    qcloud  
       2016-06-26 20:11:33 +08:00
    @ZiShuo 不知道赚钱的公司不是好公司, QAQ
    xiaoz
        66
    xiaoz  
       2016-10-25 19:26:20 +08:00
    我就想问问怎样添加 IP 段?
    qcloud
        67
    qcloud  
       2016-12-30 13:03:29 +08:00
    老哥问个问题啊,如果网站用了 CDN ,表示设置的规则就不起作用了哇
    wzw
        68
    wzw  
       2018-05-07 06:52:16 +08:00 via iPhone
    还计划更新吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5473 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 06:41 PVG 14:41 LAX 23:41 JFK 02:41
    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