问题描述
前后端分离项目部署到开发环境后,浏览器发起请求,访问后端接口一直报400错误,而通过浏览器直接访问后端接口可以访问成功
问题定位
根据问题描述可以定位是前端部署nginx出现问题,定位问题和寻找方法经过:
- 调大client_header_buffer_size和large_client_header_buffers这两个参数(无效)
- proxy_pass反向代理的域名改为ip(不适用)
- 空请求导致400问题,将监听的server_name localhost; 改为servername ;(无效)
- 通过postman模拟浏览器请求,设置和浏览器访问一下的请求头,逐步勾选取消各项请求头来测试,直到请求正常为止,经过测试发现请求头中勾选的Host取消后请求恢复正常
问题解决
通过上述问题排查,基本可以确定nginx配置文件中如下的问题123456location ~ (.*?\/api\/).*$ { proxy_pass http://ads-report-service.pass.cmbchina.cn proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; // 取消这行请求恢复正常 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}