nginx 嵌套位置指令继承何时适用,何时不适用

nginx 嵌套位置指令继承何时适用,何时不适用

我知道我必须在下面两个位置复制 proxy_pass,proxy_set_headers 也需要复制吗?

location / {
  proxy_pass http://mywebfeservers;
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Client-SSL  YES;
  proxy_set_header  X-Forwarded-For  $remote_addr;
  proxy_set_header  X-Forwarded-Host  $host;
  proxy_set_header  X-Forwarded-Port  443;
  proxy_set_header  X-Forwarded-Scheme  https;

  location /aaa {
    proxy_pass http://mywebfeservers;
    client_max_body_size 30M;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Client-SSL  YES;
    proxy_set_header  X-Forwarded-For  $remote_addr;
    proxy_set_header  X-Forwarded-Host  $host;
    proxy_set_header  X-Forwarded-Port  443;
    proxy_set_header  X-Forwarded-Scheme  https;
  }
}

答案1

理论上如果你删除/aaa然后离开/你应该会得到同样的效果。

如果你需要在不同的环境中使用相同的代理配置位置您可以在文件中添加代理配置。

例子:

  1. 创建文件 proxy.conf 并添加以下行

添加

proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Client-SSL  YES;
proxy_set_header  X-Forwarded-For  $remote_addr;
proxy_set_header  X-Forwarded-Host  $host;
proxy_set_header  X-Forwarded-Port  443;
proxy_set_header  X-Forwarded-Scheme  https;
  1. 修改配置
    location / {
        proxy_pass http://mywebfeservers;
        include <your path>/proxy.conf
    }
    
    location /aaa {
       proxy_pass http://mywebfeservers;
       include <your path>/proxy.conf
    }
  1. 重新加载配置

主要目标是创建一个模块化配置(多个文件),允许您修改单个文件来修改配置的多个点。

答案2

对 Ivan Shatsky 对该问题的评论进行了稍微改述。

在 proxy_set_header 指令的最开始部分有非常清楚的记录描述

当且仅当当前级别上没有定义 proxy_set_header 指令时,这些指令才会从前一个配置级别继承。

相关内容