在nginx配置文件 /etc/nginx/nginx.conf 里有一行扩展配置 include /etc/nginx/config.d/*.conf,意思是说可以将子项目的配置写在config.d这个目录下,nginx在启动时,会加载该目录下所有以.conf结尾的配置文件。

include /etc/nginx/config.d/*.conf这行配置是在主配置文件在http标签下的,意味着在/etc/nginx/config.d/*.conf里的配置文件都会被加载到主配置文件的http标签里去。所以如果在子配置文件里也有一个http级的标签的话,就会报这个错误,如下面的配置就是错误的:

/etc/nginx/config.d/log.conf

http {  
  upstream logtest {
    server logtest-8081:8081;
    server logtest-8082:8082;
  }

  server {
    location / {
      proxy_pass http://logtest;
    }
  }
}

当该子配置文件加载到主配置文件时,整体结构会是这样:

http {   
   http {  
      upstream logtest {
        server logtest-8081:8081;
        server logtest-8082:8082;
      }

      server {
        location / {
          proxy_pass http://logtest;
        }
      }
    }
}

所以就会报异常。

子配置文件的话直接这样写就OKAY了

upstream logtest {
  server logtest-8081:8081;
  server logtest-8082:8082;
}

server {
  location / {
    proxy_pass http://logtest;
  }
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐