何时需要在nginx配置文件中使用http块?

30

我正在阅读nginx初学者教程,在章节提供静态内容


http {
  server {
  }
}

但是当我添加一个http块时,会出现错误:

[emerg] "http"指令在此处不允许…

当我删除http块并将conf文件更改为以下内容时,它可以正常工作:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/example.com/html;
    index index.html index.htm;

    # make site accessible from http://localhost/
    server_name localhost

    location / {
      try_files $uri $uri/ /index.html;
  }

我觉得我可能漏掉了一些简单的东西,但是为什么他们使用http来提供静态文件呢?

1个回答

36

你做得很好。我猜你正在编辑/etc/nginx/sites-enabled/default文件(或链接文件/etc/nginx/sites-available/default)。

这是标准的nginx设置。它配置在/etc/nginx/nginx.conf中,其中包含http {}语句。这句话又包含一个“include /etc/nginx/sites-enabled/*”行,用于将上面带有server{}子句的文件包含进来。

请注意,如果你使用的是创建备份文件的编辑器,你必须修改include语句以排除备份文件,否则你会得到一些“有趣”的错误!我的语句是

include /etc/nginx/sites-enabled/*[a-zA-Z] 

该命令不会选择以波浪符结尾的备份文件。结果可能因环境而异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接