在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;
}
}