今天在用nginx时,前端和后端已经全都部署完成,但是数据无法交互,查看浏览器控制台,出现以下错误:
报错显示POST请求的路径出了问题,可以肯定不是前端的错误,然后把后端程序又看了一遍,用postman测试时发现这个地址找不到,也是报错,但是要是测试http://192.168.174.10:8080/spring12p0048n/users/login?username=admin&password=admin是可以成功的,这就可能是nginx配置文件的问题。我的配置文件如下:
/spring12p0048n/是我设的拦截器的访问方式
http://192.168.174.10:8080/是我访问的转发地址
根据错误应该是转发地址出了问题
首先我们来回顾下proxy_pass的语法:
转发地址url分为带/和不带/,带杠的为绝对根路径,会直接在路径后拼接上不带匹配路径的转发地址;如果没有杠表示相对路径,则会将匹配路径也带上进行转发,我们以举例http://192.168.244.21/user/index.html说明:
location /user/ {
proxy_pass url;
}
1、当proxy_pass http://192.168.244.21:8080/ 时
会跳转至http://192.168.244.21:8080/index.html,带/表示绝对路径,匹配路径/user/会被消除
2、当proxy_pass http://192.168.244.21:8080 时
会跳转至http://192.168.244.21:8080/user/index.html,相对路径,匹配路径/user/不会被消除
3、当proxy_pass http://192.168.244.21:8080/admin/ 时
会跳转至http://192.168.244.21:8080/admin/index.html,匹配路径/user/被消除,并且保留转发路径里的/admin/
4、当proxy_pass http://192.168.244.21:8080/admin 时
会跳转至http://192.168.244.21:8080/adminindex.html,因为proxy_pass中也包含了/了,表示绝对路径,所以/user/会被消除
所以我要想访问http://192.168.174.10:8080/spring12p0048n/users/login?username=
admin&password=admin的话转发地址应该为http://192.168.174.10:8080/
所以修改nginx配置文件如下
修改完之后再次启动nginx,发现可以登录了
原文参考地址
https://blog.csdn.net/qq_24950043/article/details/135119687