使用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;
}
答案 0 :(得分:27)
server
指令必须包含在http
模块的上下文中。此外,您缺少顶级事件模块,它具有一个强制设置,以及一系列将在您的配置的http模块中的节。虽然nginx documentation从头开始创建配置并不是特别有用,但那里有working examples。
答案 1 :(得分:11)
添加顶级条目解决了问题:
events { }
答案 2 :(得分:0)
我重新编写了* .conf文件并且工作正常。
答案 3 :(得分:0)
尝试调整行尾和配置文件的编码。在我的情况下,需要使用ANSI编码以及可能的“ Linux样式”行结尾(仅LF
和CR
符号都为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个额外的字节)没有引发错误。