nginx 中带有上游 https 和上游 http 的单个 http/https 服务器块

nginx 中带有上游 https 和上游 http 的单个 http/https 服务器块

我们当前的 nginx 设置使用与本文中指定的解决方案类似的解决方案来处理 http/https回答

nginx.conf

http {
    upstream backend {
        server backend.com
    }
    upstream backend_ssl {
        server backend.com:443
    }
}

站点可用/域名.conf

server {
    listen 80;
    server_name www.domain.com
    location /a/update {
        proxy_pass http://backend;
    }
}

站点可用/域名_ssl.conf

server {
    listen 443 ssl;
    server_name www.domain.com
    location /a/update {
        proxy_pass https://backend_ssl;
    }
}

我想修改它以使用官方 nginx 文档使用单个 http/https 服务器块。在上述场景中,我该如何做呢?因为即使位置块 URL 相同,http 和 https 的 proxy_pass 指令参数也不同。

答案1

使用$scheme多变的。

server {
    listen 80;
    listen 443 ssl;
    server_name www.domain.com
    location /a/update {
        proxy_pass $scheme://backend;
    }
}

相关内容