【问题标题】:Forward https client's header to backend application将 https 客户端的标头转发到后端应用程序
【发布时间】:2019-11-09 17:48:33
【问题描述】:

我正在使用 nginx 之类的反向代理来后端应用程序。 - 客户端使用证书-A.pem 连接到 nginx,并且 nginx 使用与根 CA 链接的中间 CA 来验证客户端(一切正常)。

现在问题来了: - nginx 必须使用与真实主机相同的标头(包含证书-A.pem)将请求转发到后端应用程序。转发到后端应用程序的数据包必须与 nginx 接收的客户端数据包相同。

为什么?因为我有大量的客户端要管理(每个客户端都有由同一个中间 CA 颁发的不同证书),后端需要证书(用来做东西)但我想用 nginx 预先验证这个证书(真的是最快的)

我已经厌倦了不同的配置,但我不知道如何代理设置正确的标头

upstream proxy_server {
 server     127.0.0.1:8443;  <---my backend application
}

server {
listen   443 ssl;
listen   [::]:443;

ssl_certificate   /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw.pem;

ssl_certificate_key   /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw-key.pem;

location / {
proxy_pass   https://proxy_server;
proxy_redirect          off;
proxy_set_header    Host             $host;
proxy_set_header    X-Real-IP        $remote_addr;
proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_set_header    X-Custom-Referrer $http_x_custom_referrer;
   }
}

无法验证证书。

【问题讨论】:

    标签: ssl nginx https proxy forward


    【解决方案1】:

    转发到后端应用程序的数据包必须与 nginx 接收的客户端数据包相同。

    如果是这种情况,我相信你只需要在stream 模式下使用 nginx 作为 TCP 代理。我不知道您能否在nginx 端进行任何验证,但这完全取决于后端应用程序。

    不可能(我不认为)让nginx 设置 SSL 连接,将加密数据传递到后端。

    【讨论】:

    • 我的最后一个工作配置有流模块和 ssl_preread 并且它工作正常,但我需要预先检查请求....我认为唯一的解决方案(坏和慢)是重新加密数据包(通过 nginx)....我需要更改架构
    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 2023-04-03
    • 2022-01-14
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多