Подтвердить что ты не робот

Nginx неизвестная директива "upstream"

Я использую nginx в качестве прокси-сервера для пересылки запросов на мой сервер для пушек. Когда я запускаю sudo nginx -t -c /etc/nginx/sites-enabled/mysite, я получаю следующую ошибку.

[emerg]: unknown directive "upstream" in /etc/nginx/sites-enabled/mysite:1
configuration file /etc/nginx/sites-enabled/mysite test failed

Есть идея, как это исправить? Это моя конфигурация nginx:

upstream gunicorn_mysite {
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen 80;
    server_name example.com;

    access_log /usr/local/django/logs/nginx/mysite_access.log;
    error_log /usr/local/django/logs/nginx/mysite_error.log;

    location / {
        proxy_pass http://gunicorn_mysite;
    }
}

Я запускаю Ubuntu 10.04, а моя версия nginx - 0.7.65, которую я установил из apt.

Это результат, когда я запускаю nginx -V

nginx version: nginx/0.7.65
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-mail --with-mail_ssl_module --with-ipv6 --add-module=/build/buildd/nginx-0.7.65/modules/nginx-upstream-fair
4b9b3361

Ответ 1

Включает мою конфигурацию nginx. Проблема была в том, что мой сервер для пушек не работал должным образом.

Ответ 2

Когда вы указываете nginx на загрузку этого файла напрямую, он запускается в глобальном контексте. Директива upstream действительна только в контексте http. Когда этот файл обычно включается nginx.conf, он уже включен в контекст http:

http {
  include /etc/nginx/sites-enabled/*;
}

Вам либо нужно использовать -c/etc/nginx/nginx.conf, либо сделать небольшую оболочку, такую ​​как вышеупомянутый блок, и nginx -c.

Ответ 3

Я использую версию nginx: nginx/1.4.1 на EC2 Ubuntu. Я получал эту ошибку:

nginx: [выпустить] директива "вверх по течению" здесь не разрешена в /etc/nginx/nginx.conf

Чтобы запустить мой экземпляр, мне пришлось обернуть разделы вверх и сервера в разделе http {}. Затем он пожаловался на отсутствие раздела событий. Поэтому я добавил следующее:

события {   worker_connections 1024; }

Он отлично справился после этих исправлений, это мое первое усилие, поэтому я догадывался о своем пути.