爱意满满的作品展示区。
AlexaZhou

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

  •  2
     
  •   AlexaZhou ·
    alexazhou · May 2, 2016 · 14011 views
    This topic created in 3838 days ago, the information mentioned may be changed or developed.

    好吧,这次是个大更新。

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

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

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

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

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

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

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

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

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

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

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

    祝大家玩的开心~

    Supplement 1  ·  May 30, 2016
    大家使用中如果有建议或者问题的,请到 Github 上提出 Issue ,我会及时处理。

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

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


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

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

    真棒,一下就配置好了
    Lxxyx
    Lxxyx
    May 2, 2016❤️1
    10
    已经在自己小轮子的 readme 里添加 VeryNginx 为推荐配置了。
    https://github.com/Lxxyx/koa2-easy
    AlexaZhou
    AlexaZhou
    OP
    May 2, 2016
    11
    @Lxxyx

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

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

    drupes 提供了一种不重启情况下修改 upstream 的方式,一些情况下会很好用。不过 balancer 特性能做的事情会更多一些。
    qcloud
    qcloud
    May 2, 2016❤️1
    14
    已经编译准备提交至 AMH ,多谢这么牛逼的东西
    AlexaZhou
    AlexaZhou
    OP
    May 2, 2016
    15
    @qcloud

    多谢夸奖啦~
    可否科普一下 AMH ?
    qcloud
    qcloud
    May 2, 2016
    16
    AlexaZhou
    AlexaZhou
    OP
    May 2, 2016
    17
    @qcloud

    看到啦,感觉蛮有用的
    qcloud
    qcloud
    May 2, 2016❤️1
    18
    @AlexaZhou 很大的用户量哦,做成模块,提供用户下载
    kdsex
    kdsex
    May 2, 2016 via iPhone
    19
    mark 支持
    AlexaZhou
    AlexaZhou
    OP
    May 2, 2016
    20
    太感谢支持啦
    common07
    common07
    May 2, 2016
    21
    @AlexaZhou 不知道有没有打包好的 docker 镜像?
    Syc
    Syc
    May 2, 2016 via Android
    22
    火钳刘明
    kn007
    kn007
    May 2, 2016
    23
    支持。
    bazingaterry
    bazingaterry
    May 2, 2016 via iPhone
    24
    支持!迟点的小项目用上试试。
    YUX
    YUX
    May 2, 2016
    25
    求个 Docker image 版
    qcloud
    qcloud
    May 2, 2016❤️1
    26
    hljjhb
    hljjhb
    May 2, 2016
    27
    你这个项目啊…… excited !
    xuhaoyangx
    xuhaoyangx
    May 2, 2016
    28
    反代基础上加上 sub_filter 就好了
    AlexaZhou
    AlexaZhou
    OP
    May 2, 2016 via iPhone
    29
    @qcloud

    从图上看是缺少 gcc 工具链,所以没办法编译。装上 gcc 就好了
    lutla
    lutla
    May 3, 2016
    30
    excited !
    dzxx36gyy
    dzxx36gyy
    May 3, 2016 via Android❤️1
    31
    @qcloud 今天还给 amh 发了工单建议添加这个(:3▓▒,感觉不能在棒
    dzxx36gyy
    dzxx36gyy
    May 3, 2016 via Android❤️1
    32
    @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
    dzxx36gyy
    May 3, 2016 via Android
    33
    @qcloud 话说不试试直接基于 nginx-1.10.0 来改么,我自己就是这么干的……修改了下模块的编译参数
    qcloud
    qcloud
    May 3, 2016
    34
    装个这玩意咋就这么难呢 - -
    https://gyazo.com/41ee1349e9bf43562b4a2dd6d41e85c7
    qcloud
    qcloud
    May 3, 2016
    35
    @dzxx36gyy 发工单也不会集成了,只有自己搞,他会告诉你 nginx 系列就行了
    AlexaZhou
    AlexaZhou
    OP
    May 3, 2016
    36
    @qcloud

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

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

    yum install pcre pcre-devel

    这样把 PCRE 依赖装上就好啦

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

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

    yum install openssl-devel

    我回头会写一个文档来把这些都列出来
    qcloud
    qcloud
    May 3, 2016
    37
    @AlexaZhou 麻烦了
    AlexaZhou
    AlexaZhou
    OP
    May 3, 2016
    38
    @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
    dzxx36gyy
    May 3, 2016
    39
    @AlexaZhou 感谢,我晚上再试试
    GPU
    GPU
    May 3, 2016
    40
    一直在用 ,没更新前总感觉有点像花瓶 ,毕竟我用不上 match 这些功能。
    lzsadam
    lzsadam
    May 3, 2016
    41
    安装配置好登录 502 什么问题?
    用的是
    https://blog.linuxeye.com/31.html
    的 OpenResty
    看他的源码 openresty.sh 里面只少了一个编译的参数,又加上重新编译了一次
    环境应该是 OK 的
    AlexaZhou
    AlexaZhou
    OP
    May 3, 2016
    42
    @lzsadam

    可以访问一下页面,看看 nginx 的 error log 中有没有报错信息
    lzsadam
    lzsadam
    May 3, 2016
    43
    @AlexaZhou 404 了,没报错,没改默认目录
    就是给了个域名,指向 /opt/verynginx/verynginx/dashboard
    lzsadam
    lzsadam
    May 3, 2016
    44
    其余配置也没有任何变动
    lzsadam
    lzsadam
    May 3, 2016
    45
    @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
    AlexaZhou
    OP
    May 3, 2016
    46
    @lzsadam

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

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

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

    不需要配置 /root /opt/verynginx/verynginx/dashboard;
    也不需要配置 server name 啥的
    AlexaZhou
    AlexaZhou
    OP
    May 3, 2016
    49
    @lzsadam

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

    需要自己在 nginx.conf 中添加
    unkn369
    unkn369
    May 22, 2016
    57
    @AlexaZhou 反代 *.abc.com abc.com 到 127.0.0.1 Matcher 怎么写?
    AlexaZhou
    AlexaZhou
    OP
    May 22, 2016
    58
    Matcher 这样写: host ≈ .*abc\.com

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

    刚忘记 @ 了
    unkn369
    unkn369
    May 27, 2016
    60
    @AlexaZhou 添加 Up Stream 点 save 报错 Ajax request failed [status code = 200]
    unkn369
    unkn369
    May 30, 2016❤️1
    62
    @AlexaZhou 已经参照这个说明设置不行, Up Stream 和 Proxy Pass 之前已经添加成功两对记录, 现在要添加第三条记录, 保存时一直报错 Ajax request failed [status code = 200]
    AlexaZhou
    AlexaZhou
    OP
    May 30, 2016❤️1
    63
    @unkn369

    呃,还可以看看 nginx error.log ,看有没有什么内容。另外请移步去 Github 上提 Issue 吧,尽量多说明一些情况,我好帮你解决。
    ZiShuo
    ZiShuo
    Jun 25, 2016 via Android
    64
    @qcloud AMH 官方现在只顾着赚钱了,我很早就不用他们的插件了,话说我已经搞成 AMH 面板的插件了。后台一键安装,一键卸载!
    qcloud
    qcloud
    Jun 26, 2016
    65
    @ZiShuo 不知道赚钱的公司不是好公司, QAQ
    xiaoz
    xiaoz
    Oct 25, 2016
    66
    我就想问问怎样添加 IP 段?
    qcloud
    qcloud
    Dec 30, 2016
    67
    老哥问个问题啊,如果网站用了 CDN ,表示设置的规则就不起作用了哇
    wzw
    wzw
    May 7, 2018 via iPhone
    68
    还计划更新吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5145 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 01:19 · PVG 09:19 · LAX 17:19 · JFK 20:19
    ♥ Do have faith in what you're doing.