技术解析

Nginx 这样配置,总是报 nginx: [emerg] unknown directive "127.0.0.1:8000"... 是哪里写错了呢?
0
2021-05-20 23:55:13
idczone

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

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


前面漏了个 server 关键字了吧
upstream 的语法看一下.
http://nginx.org/en/docs/http/ngx_http_upstream_module.html

server 127.0.0.1 试试

强迫症受不了不用 include vhost/*.conf;
另外楼上说的对 upstream 地址需要用 server 开头

/>表示墙裂赞同。

如果只有一个配置用什么 include



server 关键字是漏打了




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 然后,各种不通

你是不是把 worker_processes 加到 http 里面了

include /usr/local/nginx/conf/*.conf; 不要随便加,自己搞清楚配置文件是什么结构再加

没,worker processes 是方 http 外面的。

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

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服