Nginx 这样配置,总是报 nginx: [emerg] unknown directive "127.0.0.1:8000"... 是哪里写错了呢?

2018-06-06 14:14:56 +08:00
 miniyao

本来的单机配置是这样的,访问正常:

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
    listen 80;
    server_name my-domain.com;

    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    client_max_body_size 200M;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /static/ {
        root /usr/local/nginx/project/;
    }

    }   
}

为了增加负载均衡,然后我把上面的单机配置改成:upstream backend {...},测一下就提示错误 nginx: [emerg] unknown directive "127.0.0.1:8000"

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    upstream backend {
      127.0.0.1:8000;
    }

    server {
    listen 80;
    server_name my-domain.com;

    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

    client_max_body_size 200M;

    location / {
        proxy_pass http://backend;
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /static/ {
        root /usr/local/nginx/project/;
    }

    }   
}

服务器结构是 nginx + gunicorn + flask

9916 次点击
所在节点    NGINX
10 条回复
akira
2018-06-06 14:23:22 +08:00
前面漏了个 server 关键字了吧
upstream 的语法看一下.
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Zzdex
2018-06-06 14:25:04 +08:00
server 127.0.0.1 试试
d0m2o08
2018-06-06 14:28:57 +08:00
强迫症受不了不用 include vhost/*.conf;
另外楼上说的对 upstream 地址需要用 server 开头
LeungJZ
2018-06-06 14:33:22 +08:00
@d0m2o08 #3.
表示墙裂赞同。
kslr
2018-06-06 14:38:11 +08:00
如果只有一个配置用什么 include
miniyao
2018-06-06 14:58:06 +08:00
@akira
@Zzdex
server 关键字是漏打了


@d0m2o08
@LeungJZ
@kslr
include /usr/local/nginx/conf/*.conf; 加不加没区别呀,我手动执行了一下:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

没有用,又报 nginx: [emerg] "worker_processes" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:3
把 worker_processes 1; 改成 worker_processes auto; 还是同样的错误

比较奇怪。单机跑的配置很正常,调整了一个 upstream 然后,各种不通
kslr
2018-06-06 15:02:37 +08:00
你是不是把 worker_processes 加到 http 里面了
akira
2018-06-06 15:05:59 +08:00
@miniyao include /usr/local/nginx/conf/*.conf; 不要随便加,自己搞清楚配置文件是什么结构再加
miniyao
2018-06-06 15:06:23 +08:00
@kslr 没,worker processes 是方 http 外面的。
miniyao
2018-06-06 15:13:47 +08:00
@akira 谢谢

光 reload nginx 不管用,reboot 下服务器什么毛病都好了 谢谢大家的建议

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/460873

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX