Nginx 反向代理未重定向到 HTTPS

时间:2020-12-29 15:45:53

标签: apache nginx https reverse-proxy

所以我有一个 Nginx 服务器作为这个配置的反向代理

http {
    server {
    listen 80;
    listen [::]:80;
    server_name www.example.tdl;
    access_log logs/reverse-access.log;
    error_log logs/reverse-error.log;

        location / {
                    proxy_pass https://127.0.0.1:443;
        }
    }

}

我唯一的问题是,当我连接到 example.tdl 时,它会正确重定向,但不能使用 HTTPS。但它重定向到我的 Apache 服务器的 https 端口,所以我不知道问题出在哪里。 之前没用过nginx,可能是配置错误。

如何让 nginx 重定向到使用 https 的端口?

1 个答案:

答案 0 :(得分:1)

这听起来可能很愚蠢,但您所知道的是 nginx 正在充当您的代理。您通过 HTTP 连接到 nginxnginx 通过 HTTPS 将您的请求转发给 apache,然后获取回复并使用 HTTP 将其传输给您。

您需要让 nginx 使用 listen 443 ssl; 侦听 HTTPS 并为其提供证书 (ssl_certificate <path>;) 和密钥 (ssl_certificate_key <path>;)。之后,将以下代码添加到服务器块:

if ($scheme != "https") {
    return 301 https://$host$request_uri;
}

这会将所有内容重定向到 HTTPS。