我正在关注教程在 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 中的其他文件是否缺少}
.