2017-04-26 99 views
4

我是NGINX的新手,我试图设置最少的工作。所以我想用nginx和supervisor运行aiohttp mini-app(例如this)。但我无法配置Nginx的权利,得到以下错误:nginx:[emerg]“http”指令在/ etc/nginx/sites-enabled/default中不允许:1

nginx: [emerg] "http" directive is not allowed here in /etc/nginx/sites-enabled/default:1 

这里充满default.conf文件:

http { 
    upstream aiohttp { 
    # Unix domain servers 
    server unix:/tmp/example_1.sock fail_timeout=0; 
    server unix:/tmp/example_2.sock fail_timeout=0; 
    server unix:/tmp/example_3.sock fail_timeout=0; 
    server unix:/tmp/example_4.sock fail_timeout=0; 
    } 

    server { 
    listen 80; 
    client_max_body_size 4G; 

    server example.com; 

    location/{ 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_redirect off; 
     proxy_buffering off; 
     proxy_pass http://aiohttp; 
    } 
    } 

} 

它看起来是正确的。 server指令在http中应该是。而http是父指令。我做错了什么?

回答

11

我假设你在/etc/nginx/nginx.conf文件中有http然后告诉nginx include sites-enabled/*;

,那么你有

http 
    http 
     server 

作为HTTP应该仅发生一旦只是从您的网站启用配置文件中删除http指令

+0

你说得对,'/ etc/nginx/nginx.conf'有这一行。我删除了'http'指令,现在得到“服务器指令不允许在这里”错误。没有完整配置的 – Paul

+0

我不太确定。如果你想分享,那么我可以帮助更多。 –

+0

好的,对不起,我只是不知道Nginx有多少个配置文件。它的主题是'sites-available/default.conf'的全部内容我应该向你展示哪些文件?只需要'/ etc/nginx/nginx.con'或其他东西? – Paul

0

所以,实际上问题是在第二个server关键字。我使用了aiohttp文档中的一个示例,看起来他们错误地用“server example.com”打错了,而不是server_name example.com

0

您可以插入这应该是内部http{}节到您nginx.conf/etc/nginx/sites-available/default只留下server{}节的一部分。