如何将 HTTPS 流量从 nginx 代理容器引导至网站容器?

如何将 HTTPS 流量从 nginx 代理容器引导至网站容器?

我有 2 个运行 nginx 的 docker 容器。第一个容器充当反向代理,将流量引导到第二个容器。第二个容器是网站文件所在的位置。代理容器的端口 80 和 443 向公众公开。

对于 HTTPS,我的目的是让代理容器将流量引导到实际网站容器上的 nginx 来处理 SSL。

通过这种方式,我希望可以使代理容器上的 nginx 配置文件更简单、更容易维护,因为 SSL 配置都是由各自网站容器中的 nginx 设置和处理的。

这是代理容器的 nginx 配置文件:

upstream mywebsite {
    server website-container;
}

server {
    listen 80 default deferred;
    listen 443 deferred;
    server_name         mywebsite.com www.mywebsite.com;

    location / {
        proxy_pass $scheme://mywebsite;
    }
}
... other server blocks for other domains ...

website-container以下是代理容器将“代理传递”到的容器的 nginx 配置文件:

server    
    {
        listen       80;
        server_name  mywebsite.com;
        return       301 https://www.mywebsite.com$request_uri;
    }

server
    {
        listen 443;
        listen [::]:443 ssl http2;
        server_name            mywebsite.com;
        ssl_certificate        /var/www/html/cert.pem;
        ssl_certificate_key    /var/www/html/key.pem;
        root                   /var/www/html;
    }

但是,当我通过 HTTPS 访问该网站时,总是收到连接被拒绝错误。

我尝试删除重定向到 HTTPS,HTTP 站点似乎可以正常工作。因此,错误一定与 HTTPS 或端口 443 有关。

我的配置文件有什么问题吗?我怎样才能让代理容器将 HTTPS 流量交给网站容器中的 nginx website-container

相关内容