V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
chenqy930
V2EX  ›  NGINX

ngnix 做代理的问题

  •  
  •   chenqy930 · 2018-05-06 21:43:40 +08:00 · 2753 次点击
    这是一个创建于 2378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前想实现这样一个功能:用户发出请求在获取服务器 A 的内容前,先查询服务器 B 是否有权限,如果有,则将请求转发给 A,返回内容。如果没有,返回给用户权限不足的信息。

    最近刚入门 nginx,我的一个实现思路是用户原始请求到达后 subsequent 模块产生一个新请求到服务器 B,根据 B 的返回结果来确定是否用 proxy_pass 原请求到服务器 A。我看《深入理解 nginx 》这本书讲解 B 返回之后的回调函数一般是构造响应包发送给用户,不知在这一步再产生一个 subsequent 的做法是否可行呢?

    恳请大家指教~~

    siteshen
        1
    siteshen  
       2018-05-07 08:59:55 +08:00
    没在 nginx 中实现过这么复杂的逻辑,用 lua 应该能做到。可以考虑直接在 A 服务器代码中请求 B 服务器是否有权限。
    chenqy930
        2
    chenqy930  
    OP
       2018-05-07 10:36:02 +08:00
    因为服务器 A 的代码不便修改,所以还是想尽量用代理实现,我去看看 lua,感谢~
    Judoon
        3
    Judoon  
       2018-05-07 11:29:33 +08:00
    难道不是所有请求都打到 B,
    然后 B 判断是否有权限,没权限直接返回给 nginx 403,有权限再向 A 请求了结果后返回给 Nginx 吗?


    这样所有的逻辑处理都在 B,A 的代码也不用改,nginx 也只做了反代的功能,结构不是更清晰吗?
    chenqy930
        4
    chenqy930  
    OP
       2018-05-07 18:36:39 +08:00
    有道理啊,可是 B 也不便修改呢- -
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:32 · PVG 10:32 · LAX 18:32 · JFK 21:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.