nginx 报错 “http“ directive is not allowed here in ...

在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;
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值