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$
至此问题解决,也吸取一个教训,有时候越简单地事情越要仔细~