Nginx配置报错:http指令不允许在此位置(/etc/nginx/sites-enabled/default:22)
Nginx报错"http directive is not allowed here"解决办法
问题原因
/etc/nginx/sites-enabled/default是Nginx的虚拟主机配置文件,它会被主配置文件(一般是/etc/nginx/nginx.conf)里的include /etc/nginx/sites-enabled/*;指令导入到http块内部。所以这个文件里绝对不能再写http指令,否则就会出现层级冲突,触发报错。
解决步骤
- 打开出错的配置文件:
sudo nano /etc/nginx/sites-enabled/default - 定位到第22行,删除整个
http包裹块,只保留里面的server、location等合法配置内容 - 验证配置语法正确性:
sudo nginx -t - 语法检测通过后,重启Nginx生效:
sudo systemctl restart nginx
额外说明
如果之前把代码放到主配置的http块里仍有问题,大概率是主配置的http块本身存在语法错误(比如括号不匹配、嵌套错误),或者重复导入了配置文件。可以打开主配置文件/etc/nginx/nginx.conf检查http块的结构,确保所有include指令都在http块内部,且没有重复定义相同的配置节点。
内容的提问来源于stack exchange,提问作者Haseeb Ch
相关产品推荐
相关产品推荐

