nginx将post请求转为了get请求问题分析
部署并配置nginx后,然后用postman工具测试,发送一个post请求,结果却返回400错误。

post请求
nginx配置如下所示:
location /nadminv/ {
proxy_pass http://localhost:8251/nadminv;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
作用是将请求转发到本地端口8251的http程序进行处理。
查看nginx日志,发现并没有错误日志,但access.log确实也产生了,说明post请求到达了nginx。奇怪的是,access.log中出现了两条记录,第一条post返回301错误码,紧接着收到同样的get请求,返回400。

nginx日志
其中301错误码为重定向,说明因为nginx的配置问题导致了发生重定向!
经过网上搜索解答,果然是配置问题,在location后的地址最后不用加斜线,即配置为:
location /nadminv {
proxy_pass http://localhost:8251/nadminv;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重启nginx后再测试发送post指令,则最后请求正常。
nginx是最常用的代理/反向代理服务器,涉及它的配置还是挺多的,本文记录在日常使用中遇到的nginx问题,给自己总结,也希望对读者有所帮助。