使用 nginx 进行反向代理:使用现有的 https 站点作为后端

使用 nginx 进行反向代理:使用现有的 https 站点作为后端

我在互联网上有一个可以以“https://site.example1.com”访问的网站。

我还有另一个可在互联网上访问的网站“https://www.example2.com”。

我对这两个站点拥有完全控制权,并且它们都拥有有效的证书。

现在我想让第一个站点作为第二个站点上的位置可访问;这意味着“https://www.example2.com/site”应该显示“https://site.example1.com”的内容。

我尝试了一个简单的:

server {
    listen 443 ssl;

    resolver 127.0.0.1 8.8.8.8;

    server_name updates.okcash.com;
    ssl_certificate /etc/letsencrypt/live/www.example2.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example2.com/privkey.pem;

    ssl_verify_client optional_no_ca;

    location /site {
        proxy_pass              "https://site.example1.com";
        rewrite                 /site/(.*) /$1     break;
        proxy_redirect          off;
        proxy_set_header        Host               $host;
    }
    location / {
        proxy_pass              "http://localhost:5001";

        proxy_connect_timeout   60;
        proxy_read_timeout      86400; # 24h
        proxy_send_timeout      60;
        proxy_intercept_errors  off;
        proxy_http_version      1.1;
        proxy_set_header        Host               $http_host;
        proxy_set_header        X-Real-IP          $remote_addr;
        proxy_set_header        X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto  $scheme;
        proxy_set_header        Upgrade            $http_upgrade;
        proxy_set_header        Connection         "upgrade";
    }
}

但这不能很好地工作,因为浏览器(访问“https://www.example2.com/site”)提供的来自后端(“https://site.example1.com”)的服务器证书对于请求无效。

如何强制 nginx 前端发送自己的证书并自行验证后端身份?

相关内容