问题
1、已经把项目部署至远程服务器了,然后试着 电脑发起一个post请求,用ctx.ip获取到的居然还是127.0.0.1。原因是我用控制台的域名解析,解析到了一台服务器的ip地址,那台服务器,我用了nginx的代理指向本地的egg服务端口。所以egg每次ctx.ip获取到的ip地址是127.0.0.1。
解决
1、设置nginx
1 | server { |
重点是这两句 proxy_set_header X-Real-IP $remote_addr;
和proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
JavaScript打多的小伙伴,记得配置nginx记得把;
分号带上,不然找半天错误,人都没了。
2、修改egg.js
修改egg.js项目里的代码 关于 ctx.ip
的代码 换成 ctx.get('X-Real-IP')
。
意思是:nginx已经把用户的真实ip放在了请求头headers
里的X-Real-IP
里。所以用ctx.get()去获取即可。
测试
自己再测试一下接口,祝你好运~