windows往linux里拷贝内容编码问题导致nginx报错:unknown directive “ “ in /etc/nginx/conf.d/XXX.conf 的问题

一、问题背景

1、报错信息:

  在nginx配置文件中增加gzip配置后,出现该报错:

  nginx: [emerg] unknown directive " " in /etc/nginx/conf.d/XXX.conf:13

2、报错原因:

  该问题为文本从Windows中拷入Linux,空格编码不统一。

二、解决方法

1、排错:

  最开始排错角度为配置的准确性,在网上寻找许多资料后,确认当前配置没有问题。

  再次查看报错,感觉错误信息在说文件中空格出现了问题,空格被当做了一个配置项?而且正好是第 13 行。

  忽然想到这些配置是从我之前的博客中复制的,然后在 Windows 中写了个记事本,然后格式化后拷入到 linux vim 里的,会不会像之前遇到的 ^ M 问题一样?继续从Windosw文本复制到Linux这个角度排查。

2、查看配置文件

cat -A /etc/nginx/conf.d/XXX.conf

  可以看到,输出了很多M-BM-,这些貌似是从Windows拷贝过来的空格。

  将文本中所有的M-BM-替换为普通空格后,nginx检测通过。

  再次启动 nginx 镜像就成功更新了。

posted @ 2018-04-20 10:57  古兰精  阅读(3025)  评论(0编辑  收藏  举报