Nginx 1.16.1校验配置报proxy_pass指令不允许在此处问题求助
错误根因
你当前的配置出现报错是因为配置文件被重复加载导致的:
- 你在
nginx.conf的http块中配置了include /etc/nginx/conf.d/*.conf;,会加载conf.d目录下所有后缀为.conf的文件 - 你的stream配置文件命名为
rmq.stream.conf,符合.conf后缀规则,会同时被http块和stream块加载 proxy_pass指令在stream上下文的server块中是合法的,但在http上下文的server块中不支持该写法,因此校验时抛出"proxy_pass" directive is not allowed here错误。
修复方案
任选以下一种方案调整即可:
- 方案1:修改
http块的加载规则,避免加载stream配置
将nginx.conf中http块的include /etc/nginx/conf.d/*.conf;改为更精准的匹配规则,比如include /etc/nginx/conf.d/*.http.conf;,再把所有http类的配置文件后缀统一改为.http.conf即可。 - 方案2:调整stream配置的存放目录
新建独立的stream配置目录,比如/etc/nginx/stream.d/,将rmq.stream.conf挪到该目录下,再把nginx.conf中stream块的配置改为include /etc/nginx/stream.d/*.conf;即可。 - 方案3:修改stream配置的后缀规则
将rmq.stream.conf改名为rmq.stream,再把nginx.conf中stream块的配置改为include /etc/nginx/conf.d/*.stream;,避免被http块的规则匹配到。
调整完成后执行nginx -t校验即可正常通过。
内容的提问来源于stack exchange,提问作者Cui3093
相关产品推荐
相关产品推荐

