nginx: [emerg] "upstream" directive is not allowed here in .../.../.../*.conf

Posted 好极了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx: [emerg] "upstream" directive is not allowed here in .../.../.../*.conf相关的知识,希望对你有一定的参考价值。

因为临时需要在本机搭建一个nginx服务使用,其实很简单的一个本地server,但是运行的时候就报错:

192:~ superstar$ nginx
nginx: [emerg] "upstream" directive is not allowed here in /usr/local/nginx/conf/conf.d/test.com.conf:1
192:~ superstar$

检查了我的配置文件 test.com.conf 发现也没有问题:

upstream a_platform{
            server 127.0.0.1:7100 weight=1 max_fails=2 fail_timeout=5s;
}

server {
        listen 80;
        server_name a.test.com;
        access_log   /tmp/nginx/a_platform/access.log; 
        error_log    /tmp/nginx/a_platform/error.log; 

        location ^~ /{
            proxy_pass http://127.0.0.1:7100/;
        }
        location = /{
            proxy_pass http://127.0.0.1:7100/;
        }
}

然后网上查了一下说是“upstream”不能再http这个block里面,于是查看了一下我的nginx.conf的配置;发现果然有问题。

因为是nginx.conf.default改过来的在进行inlude的时候,是直接在server的block里面的,如下红色部分

……………………

events {
    worker_connections  1024;
}

http {
# ……………………其他配置文件……………… server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
include …………/conf/conf.d/*.conf; } # ……………………………………其他配置 }

 而实际上应该在黄色server部分以外,如下所示:

……………………

events {
    worker_connections  1024;
}


http {
#  ……………………其他配置文件………………
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
       include   …………/conf/conf.d/*.conf;
# ……………………………………其他配置 
}

修改完成,运行,问题解决:

192:~ superstar$ 
192:~ superstar$ nginx
192:~ superstar$ ps -ef | grep nginx
  501 28996     1   0 12:50上午 ??         0:00.00 nginx: master process nginx
  501 28997 28996   0 12:50上午 ??         0:00.00 nginx: worker process
192:~ superstar$

至此问题解决,也吸取一个教训,有时候越简单地事情越要仔细~

 

以上是关于nginx: [emerg] "upstream" directive is not allowed here in .../.../.../*.conf的主要内容,如果未能解决你的问题,请参考以下文章

nginx: [emerg] "server" 指令在这里不允许

nginx:[emerg]unknown directive "ssl"

nginx: [emerg] "upstream" directive is not allowed

nginx: [emerg] getpwnam("www") failed

django- nginx: [emerg] open() "/etc/nginx/proxy_params" 在 /etc/nginx/sites-enabled/myproje

nginx 启动报错 nginx: [emerg] getgrnam("root") failed