/etc/nginx/nginx.conf:4中的未知指令“server”

时间:2012-06-07 15:15:42

标签: nginx

使用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;
}

5 个答案:

答案 0 :(得分:27)

server指令必须包含在http模块的上下文中。此外,您缺少顶级事件模块,它具有一个强制设置,以及一系列将在您的配置的http模块中的节。虽然nginx documentation从头开始创建配置并不是特别有用,但那里有working examples

来源:nginx documentation on server directive

答案 1 :(得分:11)

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

events {  }

答案 2 :(得分:0)

我重新编写了* .conf文件并且工作正常。

答案 3 :(得分:0)

尝试调整行尾和配置文件的编码。在我的情况下,需要使用ANSI编码以及可能的“ Linux样式”行结尾(仅LFCR符号都为LF符号,不是)。

我知道这是一个相当老的问题。但是,由于有很多示例(在 Nginx 上),所以接受答案的建议(server指令必须包含在http模块的上下文中)可能会造成混淆。网站以及this Microsoft guide),其中server模块的上下文中未包含http指令。

可能的答案是 sd z (“我重写了* .conf文件,它起作用了”)是出于相同的原因:存在一个 .config 文件,重写文件后,纠正了不正确的编码或行尾。

答案 4 :(得分:0)

我遇到了一个与霍堡类似的问题,他的评论为我指明了正确的方向。就我而言,我已经从another post复制并粘贴了一个配置,以用于托管Angular应用程序的Docker容器。这是默认配置,外加一行。但是,在粘贴时,粘贴的开头(EF BB BF)包含一些额外的字符。我正在使用的IDE(Visual Studio)没有显示任何内容来指示这些额外的字节,因此并不清楚它们是否存在。删除这些多余的字节解决了这个问题,我使用十六进制编辑器(HxD)做到了,因为当时很方便。在我看来,Windows样式行的结尾似乎不是问题。

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