• 请不要在回答技术问题时复制粘贴 AI 生成的内容
daijinming
V2EX  ›  程序员

求一个动态代理方案

  •  
  •   daijinming · Nov 27, 2018 · 2596 views
    This topic created in 2814 days ago, the information mentioned may be changed or developed.

    求一个动态代理方案,基本需求是这样的,请求 / (根目录) 转发到 http://192.168.10.1:80 上, 请求 /app1 转发到 http://192.168.10.1:801,请求 /app2 转发到 http://192.168.10.1:802,这个需求其实使用 nginx 代理难度不大,我是考虑有个动态代理,转发规则存储在数据库中方便修改,不知道我的思路有没有问题?

    9 replies    2018-11-28 10:20:36 +08:00
    buhi
        1
    buhi  
       Nov 27, 2018
    写一个函数, 有人更新规则的时候, 把数据库的规则写到 nginx 配置文件, 然后执行 nginx -s reload
    xkeyideal
        3
    xkeyideal  
       Nov 27, 2018
    动态加载生成 nginx.conf,需要自己做一个系统
    ChoateYao
        4
    ChoateYao  
       Nov 27, 2018
    没有那么麻烦,我使用 Lua + redis + nginx 写了一个动态代理玩意。
    用于第三方支付调试
    mytry
        5
    mytry  
       Nov 27, 2018
    用 nginx lua 几行代码就可以搞定~
    daijinming
        6
    daijinming  
    OP
       Nov 27, 2018
    @ChoateYao @mytry 不只有什么资料或应用代码什么的可以借鉴一下,lua 也就是听过
    linxiaojialin
        7
    linxiaojialin  
       Nov 27, 2018
    1.将代理规则放在一个指定的目录或固定名称的配置文件中;
    2.nginx 主机配置引入该目录或该文件;
    3.每次更新数据库中的规则时,删除该目录下的所有文件并生成新的配置文件或覆盖该文件,最后调用函数执行"service nginx reload"或"nginx -s reload"(也可以将新的规则放进队列,建议由其它进程去重载 nginx 配置);

    不知道 LZ 会哪些语言,我以 PHP 为例吧,其它语言也差不多。
    在 PHP 中可以使用 unlink 函数删除文件,使用 file_put_contents、fopen 等函数写入文件,使用 exec、system 等函数执行系统命令,注意原目录或原文件的权限,建议用 CLI 模式执行。
    catinred
        8
    catinred  
       Nov 27, 2018
    可以试试 traefik
    PorUnaCabeza
        9
    PorUnaCabeza  
       Nov 28, 2018
    Openresty
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3283 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:51 · PVG 19:51 · LAX 04:51 · JFK 07:51
    ♥ Do have faith in what you're doing.