ssl - Docker-compose + Nginx SSL 反向代理

标签 ssl nginx proxy docker-compose

我正在尝试使用 Nginx 设置反向代理,该代理还将为后端服务提供 https。

我有 3 个容器,一个用于 mongodb,一个用于我的 .NET Core 后端应用程序,一个用于反向代理。

Docker 容器似乎运行良好,在我设置 HTTPS 之前它运行良好。

问题是来自https://localhost:8080的请求未正确转换为在 http 端口上运行的 .NET Core 应用程序。

问题出在我的 Nginx conf 文件中,但我不知道如何修复它。

    worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    upstream web {
        server web:443;
    }

    server {
        listen 8080;

        location /upstream {
            proxy_pass         https://web;
            proxy_ssl_certificate     /etc/nginx/cert.pem;
            proxy_ssl_certificate_key /etc/nginx/privkey.pem;
            proxy_ssl_session_reuse on;
            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-Forwarded-Host $server_name;
        }
    }

    server {
        listen 443 ssl;

        ssl_certificate_key    /etc/nginx/privkey.pem;
        ssl_client_certificate /etc/nginx/cert.pem;
        ssl_verify_client      off;

        location / {
            proxy_pass http://web;
        }
    }
}

当我执行 HTTP 请求时,使用 https://localhost:8080 时会返回 502 Bad gateway 错误它将返回 ERR_SSL_PROTOCOL_ERROR。

在终端中,nginx容器返回

enter image description here

有什么想法吗?

最佳答案

在阅读了一些文档后,我找到了解决方案。

    worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    upstream web {
        server web:80;
    }

    server {
        listen 8080 ssl;

        ssl_certificate         /etc/nginx/cert.pem;
        ssl_certificate_key     /etc/nginx/privkey.pem;

        location / {
            proxy_pass         http://web;
            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-Forwarded-Host $server_name;
            proxy_set_header   X-NginX-Proxy true;
        }
    }
}

关于ssl - Docker-compose + Nginx SSL 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47869317/

相关文章:

Windows 批处理脚本使控制台窗口保持打开状态

ssl - 当用户键入 https ://时,Nginx 无法正确重定向

java - 在多个服务器上重放 HTTP 请求并比较结果

rest - 使用 Heroku 和 303 的 SSL 端点

ssl - JAX-WS,信任所有不起作用的 ssl 证书

nginx 中使用 meteor 的 ssl 和 https

java - 如何将 HttpClientBuilder 与 Http 代理一起使用?

python - 如何在发送给客户端之前使用squid代理服务器修改html页面

由于缺少根证书,Azure Service Fabric 部署失败?

python - Windows SSL 证书存储和 Python LDAP