You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行nginx -t报错‘server指令不允许在此处’,请求排查错误原因

Nginx [emerg] "server" directive is not allowed here 错误原因分析

问题场景

执行nginx -t验证配置时遇到如下错误:

nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-enabled/default:8

对应的/etc/nginx/sites-available/default配置内容:

server {
    listen 27016;
    server_name 52.79.70.237;
    location / {
        proxy_pass http://127.0.0.1:27016;
    }
    server {
        listen 80 default_server;
        server_name 52.79.70.237;
        location / {
            proxy_redirect off;
            proxy_pass http://127.0.0.1:3001;
        }
    }

错误原因

这个错误的核心是你在一个server块内部嵌套了另一个server块,这直接违反了Nginx的配置语法规则。

Nginx的配置结构里,server块是隶属于http块的顶级配置单元——所有server块必须是平级关系,绝对不能互相嵌套。当Nginx解析到第8行的server指令时,它当前的上下文是在第一个server块内部,而这个层级是不允许出现server指令的,所以直接抛出了emerg级别的错误。

修复方案

把两个server块改成平级独立的结构即可:

server {
    listen 27016;
    server_name 52.79.70.237;
    location / {
        proxy_pass http://127.0.0.1:27016;
    }
}
server {
    listen 80 default_server;
    server_name 52.79.70.237;
    location / {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:3001;
    }
}

调整后再次执行nginx -t,配置应该就能顺利通过验证了。

内容的提问来源于stack exchange,提问作者user10353639

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:51:09