NGINX proxy_pass相同协议(http/https)

Ral*_*ama 7 nginx

我的NGINX配置文件中有一节proxy_pass用于将API流量重定向到上游服务器.我location在一个server块中有s ,它同时提供http和https请求:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name mysite.local;    # Valid TLD in production
Run Code Online (Sandbox Code Playgroud)

然后我有location块来定义我的API网关:

    location /api/v1/json {
        # Various proxy config directives
        proxy_pass http://upstream;
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以http://根据协议丢弃并将请求传递给我的上游服务器而不拆分我的server块?像HTML/JavaScript //mysite.local请求的东西.

nba*_*ari 13

你可以使用$scheme变量:

location /api/v1/json {
    # Various proxy config directives
    proxy_pass $scheme://your-host
}
Run Code Online (Sandbox Code Playgroud)

来自文档:

$scheme
request scheme, "http" or "https"
Run Code Online (Sandbox Code Playgroud)

然后,它将使用与原始请求相同的协议.