[alibaba/tengine]关于proxy_connect和 auth_basic

2024-08-21 798 views
7
Question

在用tengine做正向代理的时候 配置了http basic认证 auth_basic "user auth"; auth_basic_user_file htpasswd;

它在http协议下是正常的,但在https下始终返回401错误 (tengine的地址是http的,被代理的url是https的时候)。使用的是tengine 2.3.1版本。 是不是proxy_connect模块不支持http basic auth ?

回答

3
  1. https正向代理由proxy_connect模块负责:proxy_connect本质是4层透明代理,并不具备执行7层逻辑功能。即 被代理的请求(如https的等请求)是没法在ngx里做处理的(无法解析、无法操作),透明转发给了后端。
    • CONNECT请求可以做鉴权,示例链接
    • CONNECT请求完成后(即与后端的tunnel建立后),后续被代理的请求无法做任何解析和操作。
  2. http正向代理由proxy模块负责:ngx自身的proxy模块是7层代理,所以你可以基于此做各种7层逻辑(访问控制、uri改写等)。

引申出来的关于被代理请求是否能够被解析和操作的faq:chobits/ngx_http_proxy_connect_module/wiki/FAQ