我们当前的 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;
}
}