【问题标题】:ssl certificate or nginx proxy server not workingssl 证书或 nginx 代理服务器不工作
【发布时间】:2019-07-27 17:57:21
【问题描述】:

我创建了一个域 (domain.com) 和子域 (abc.domain.com),并使用letsencrypt 为这两个域生成了 SSL 证书。这两个 Django 项目都托管在 AWS EC2 上,并为它们创建了代理服务器,如下所示:

server {
    listen      443 ssl;
    server_name example.com;

    location / {
        proxy_pass https://1.2.3.4:444;
        proxy_ssl_server_name       on;
        proxy_ssl_verify            on;
        proxy_ssl_certificate      /home/domain/fullchain.pem;
        proxy_ssl_certificate_key  /home/domain/privkey.pem;
    }
}


server {
    listen      443 ssl;
    server_name abc.example.com;

    location / {
        proxy_pass https://1.2.3.4:445;
        proxy_ssl_server_name       on;
        proxy_ssl_verify            on;
        proxy_ssl_certificate      /home/subdomain/fullchain.pem;
        proxy_ssl_certificate_key  /home/subdomain/privkey.pem;
    }
}

我对代理服务器和两个项目进行分层,开始没有给出任何问题,问题是当我在浏览器上输入https://example.com 时它没有显示页面,但是当我使用端口号拉域时。 https://example.com:444,它开始显示页面。我不知道我错过了什么。

【问题讨论】:

    标签: docker ssl nginx https nginx-reverse-proxy


    【解决方案1】:

    为了使https://example.com 正常工作,您需要使用 SSL 配置正确配置 Nginx,其中包括使用 ssl_certificate 和 ssl_certificate_key 指令,因为您似乎没有使用它们。

    使用proxy_ssl_certificate 用于在 Nginx 和代理服务器之间使用 HTTPS 连接,在您的情况下是 django 应用程序。

    使用ssl_certificate 是为了在用户浏览器和Nginx 之间使用HTTPS 连接,您需要使https://example.com 按预期工作

    更多详情请查看configuring HTTPS servers

    【讨论】:

    • proxy_ssl_certificate 和 proxy_ssl_certificate_key 需要从位置 @mostafa 中删除
    • 我不确定这一点,因为文档提到这些指令用于 Nginx 之间的通信及其背后的内容,并且没有说明与 ssl_certificate 一起使用它的任何内容nginx.org/en/docs/http/… 不像 ssl_certificate将在浏览器和 nginx 本身之间
    • 你在使用ssl_certificate和proxy_ssl_certificate时是否有冲突?
    • 请发布您遇到的错误。一般来说,要使https://example.com 工作,您需要使用ssl_certificate 等等。
    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 2016-07-12
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多