15

使用 nginx/0.7.65 我在第 4 行收到此错误。为什么无法识别server

#### CHAT_FRONT ####

server {
  listen 7000 default deferred;
  server_name example.com;
  root /home/deployer/apps/chat_front/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### CHAT_STORE ####

server {
  listen 7002 default deferred;
  server_name store.example.com;
  root /home/deployer/apps/chat_store/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### LOGIN ####

server {
  listen 7004 default deferred;
  server_name login.example.com;
  root /home/deployer/apps/login/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### PERMISSIONS ####

server {
  listen 7006 default deferred;
  server_name permissions.example.com;
  root /home/deployer/apps/permissions/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### SEARCH ####

server {
  listen 7008 default deferred;
  server_name search.example.com;
  root /home/deployer/apps/search/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### ANALYTICS ####

server {
  listen 7010 default deferred;
  server_name analytics.example.com;
  root /home/deployer/apps/analytics/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
4

5 回答 5

28

The server directive must be contained in the context of http module. Additionally you are missing top-level events module, which has one obligatory setting, and a bunch of stanzas which are to be in the http module of your config. While nginx documentation is not particularly helpful on creating config from scratch, there are working examples there.

Source: nginx documentation on server directive

于 2012-06-07T15:21:07.330 回答
11

添加顶级条目解决了这个问题:

events {  }
于 2016-06-17T10:34:03.747 回答
3

尝试调整行尾和配置文件的编码。在我的情况下,需要 ANSI 编码和可能的“Linux 风格”行尾(仅LF符号,而不是符号)。CRLF

我知道这是一个相当古老的问题。然而,接受答案的建议(server指令必须包含在http模块的上下文中)可能会造成混淆,因为有很多示例(在Nginx网站上和Microsoft指南中)其中server指令包含在上下文中的http模块。

可能sd z的答案(“我重写了 *.conf 文件并且它工作了”)来自相同的原因:有一个.config文件的编码或行结尾不正确,在文件被重写后更正了。

于 2019-01-20T16:26:55.153 回答
1

我遇到了与 Hoborg 类似的问题,他的评论为我指明了正确的方向。就我而言,我从另一篇文章中复制并粘贴了一个配置,用于托管 Angular 应用程序的 docker 容器。这是默认配置加上额外的一行。但是,当我粘贴时,粘贴的开头包含了一些额外的字符(EF BB BF)。我使用的 IDE(visual studio)没有显示任何内容来指示这些额外的字节,因此它们的存在并不明显。删除这些额外的字节解决了这个问题,我使用十六进制编辑器 (HxD) 解决了这个问题,因为它当时很方便。在我的情况下,windows 样式的行尾似乎不是问题。

默认配置server作为最外层的指令,所以最上面的答案和错误消息确实令人困惑。这与我最初的情况相同,并且原始文件(没有 3 个额外字节)没有引发错误。

于 2020-08-04T02:57:34.310 回答
0

我重写了 *.conf 文件并且它起作用了。

于 2018-01-02T09:22:36.550 回答