所开发的程序是前后端分离的,所以,配置了一个反向代理,将用户的访问转发给后台的程序。这样做以后就会导致获取不到用户真实的IP。所以,从网上查阅资料后增加了一下三行配置。
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
结果,出现了一个诡异的情况:
前端的get请求还好,一旦发送post, put等请求,就会出错---前端报告后端无响应。但是,仔细检查后发现,后端实际上正常执行了前端的请求,但是,前后端的沟通出问题了。给人的感觉就像见鬼一样,有些请求能正常转发,有些无法转发!
首先想到的是去掉这三行,结果发现程序又正常了。但是,带来的后果是无法获取真实IP。
又经过仔细搜索,发现,有关IP的配置多了一行:proxy_set_header Host $host;
网上说,这一行是不需要的,而且会造成冲突。结果,注释掉这一行后,程序恢复正常,而且,也能获得真实的IP。