Nginx的conf文件出现Unicode特殊字符
脑壳疼整整两天
问题描述
在同一个配置文件下相同的配置,不同端口的两个server,两个端口所代理的服务却形成了互补
例如:原有8888端口ABCD是个代理,ABD正常可以访问到,C代理不到,现将8888复制一份成为8008端口,两个端口中同有ABCD四个代理,重启后8008ABC正常可以访问到D访问不到。
nginx.conf文件如下
worker_processes 16;
events {
worker_connections 1024;
}
http {
include mime.types;
sendfile on;
keepalive_timeout 100;
server {
listen 6666;
server_name localhost:6666;
location /A {
proxy_pass http://localhost:7001/a;
}
location /B {
proxy_pass http://localhost:7002/b;
}
location /C {
proxy_pass http://localhost:7003/c;
}
location /D{
proxy_pass http://localhost:7004/d;
}
}
server {
listen 8008;
server_name localhost:8008;
location /A {
proxy_pass http://localhost:7001/a;
}
location /B {
proxy_pass http://localhost:7002/b;
}
location /C {
proxy_pass http://localhost:7003/c;
}
location /D{
proxy_pass http://localhost:7004/d;
}
}
}
原因分析思路:
报错500后的思路
后台服务出错>>>nginx路径>>>nginx的location有上限>>>代理后路径转发
1.后台没有任何路径访问日志
2.location路径、proxy路径全部改过(去除前缀和不去除前缀),之后排除掉
3.增加、删除之后也排除掉
4.是不是转后路径多层还是少了,多层的话后台是会产生日志的,少了的话nginx应该是502排除掉
解决方案:
直到今天早上才找到问题原因,conf文件中出现<200b>这种东西,因为我是在windows下编辑直接上传到服务器,之前也没碰到过,直到今天早上vim nginx.conf之后才找到这个问题的,删除之后正常了。
这个<200b>是Unicode编码
Unicode名称 Zero Width Space
符号含义为:零宽间隔,常用标点