首页 > 解决方案 > 如何让后端 api 处理 https 证书?

问题描述

我是 nginx 的新手。

我的路由器后面有一台机器,它运行服务器并使用 Https 正确处理 80 和 443 请求。

问题是我想在另一台设备上托管第二个网站,但我只有一个 IP 地址。我买了一个树莓派零,将它用作路由器后面的反向代理。我安装 nginx 并希望将所有请求重定向到我的其他机器。RPI 0 和旧机器都有本地 IP。

要将请求从我的路由器重定向到 RPI 0,然后再重定向到我的旧机器,我使用了 proxy_pass。在端口 80 上一切正常,但在端口 443 上,我的浏览器出现证书错误。

是否可以让整个请求在旧机器上进行,让旧机器像以前一样处理 https 证书?还是必须让 nginx 处理证书?

旧的但功能齐全的安装图

旧的但功能齐全的安装图

当前安装存在证书错误

当前安装存在证书错误

我的配置:

upstream backend_a {
    server 192.168.0.20:80;
}

upstream backend_a_s {
    server 192.168.0.20:443;
}

server {
    listen  80;
    server_name mydomain;

    location / {
        include proxy_params;
        proxy_pass http://backend_a;
    }
}

server {
    listen 443 ssl;
    server_name mydomain;

    location / {
        include proxy_params;
        proxy_pass https://backend_a_s;
    }
}

标签: nginxnginx-reverse-proxy

解决方案


我找到了解决方案。我需要使用端口转发。要在 nginx 中执行此操作,我需要使用stream关键字。

stream {
   server {
        listen 443;
        proxy_pass 192.168.0.20:443;
   }
}

关键字需要与stream同级http,所以我需要编辑 /etc/nginx/nginx.conf source。其他解决方案是手动编译一个版本的 nginx,参数为--with-stream source


推荐阅读