2017-04-26 98 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{}節的一部分。