nginx 配置文件错误

nginx 配置文件错误

我正在关注教程在 Digital Ocean 上使用 Flask 和 NGINX 提供服务。我在 中为 NGINX 创建了以下配置文件/etc/sites-available/mysite

server {
    listen 80;
    server_name your_domain www.your_domain;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/user/myproject/myproject.sock;
    }
}

(显然将域替换为我的域,将路径替换为我的套接字),当我运行时sudo nginx -t -c /etc/nginx/sites-available/mysite,我得到了

nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-available/silaeder-projects:1 
nginx: configuration file /etc/nginx/sites-available/silaeder-projects test failed

我仔细检查了一下代码,确认复制正确。可能出了什么问题?

更新:

如果我只运行 sudo nginx -t,则不会出现任何错误,但sudo systemctl restart nginx会失败:

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

命令systemctl status nginx.service返回:

 nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2018-11-27 11:33:49 UTC; 39s ago
     Docs: man:nginx(8)
  Process: 8485 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
  Process: 8475 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

journalctl -xe不包含任何与时间相关的条目。

答案1

nginx 配置文件包含一个http将包含 中的所有文件的块/etc/nginx/sites-enabled/。本教程要求您在 中创建文件/etc/nginx/sites-available/,然后从 链接到它/etc/nginx/sites-enabled/

接下来它会告诉你测试完全的使用配置sudo nginx -t,而您只测试文件的配置。然而,您的文件只是使 nginx 工作所需的完整 nginx 配置的一小部分。

确保创建软链接,然后在不指定配置文件的情况下进行测试,以便它将针对完整的配置文件访问/etc/nginx.conf(或类似文件)进行测试。

答案2

错误在于不同的文件,即 nginx 在该文件之前立即读取的文件。检查 sites-enabled 中的其他文件是否缺少}.

相关内容