为什么这个 .conf 文件给出“服务器指令这里不允许”的错误?

为什么这个 .conf 文件给出“服务器指令这里不允许”的错误?

我读过一些针对几乎完全相同的问题的其他答案,但它们似乎没有解决我的问题(其中一些是由于环境不同等造成的)。

我正在 DO 上设置一个新的 ubuntu 服务器。我在该服务器上创建了一个文件 /etc/nginx/sites-available/3.conf。此文件中只有此代码(我也尝试了其余代码行,但结果相同)。

server {
     listen 80
     listen [::]:80;
     server_name 3.hotelbobbygg.xyz;
}

然而,当我像这样测试它时, root@2:~# nginx -t -c /etc/nginx/sites-available/3.conf 它出现以下错误:

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

如果我删除该文件中的所有内容,它仍然会出现此错误:

syntax is ok
nginx: [emerg] no "events" section in configuration
nginx: configuration file /etc/nginx/sites-available/3.conf test failed

如果我给出这个:nginx -t那么它tests ok

它只是一个新的 droplet,除了更新操作系统和在/var/www/我没有触碰任何其他文件。

请以服务器新手的身份并尝试学习基本功能的人的语言来回答(我已经在 ubuntu 上成功建立了一个讨论网站,现在想要在同一个 droplet/服务器上建立另一个网站)。

答案1

您使用了错误的标志。来自文档

-c filename 指定 NGINX 应该使用哪个配置文件来代替默认文件

所以当你跑步的时候

nginx -t -c /etc/nginx/sites-available/3.conf

你告诉服务器使用 3.conf反而主配置。这当然会出错,因为服务器块需要封闭。并且可用站点文件包含在主配置文件中。当你运行

nginx -t

没关系,因为该命令会验证所有配置文件,包括你的可用站点。没有理由使用 -c 标志运行它,除非您正在测试全新的主配置

相关内容