如何让后台api处理https证书?

How to let the backend api handle https certificate?

我是 nginx 的新手。

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

问题是我想在另一台设备上托管第二个网站,但我只有一个 IP 地址。我买了一个 raspberry pi 零来用作我路由器后面的反向代理。我安装了 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;
    }
}

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

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

stream 关键字需要与 http 处于同一级别,所以我需要编辑 /etc/nginx/nginx.conf source. Other solution is to manually compile a version of nginx, with the parameter --with-stream source.