前后端分离利用nginx转发请求后台接口地址
配置很简单,不过我却搞了好几天,这里大概给大家讲一下重点部分,
1、location 支持配置项目的绝对路径
2、假设我们的后台API地址是以API开头,location ^~ /api/ 代表nginx将会拦截请求地址中包含"/api/"字样的请求,其实这就是我们的ajax请求路径,拦截到请求之后根据写法会分成两种情况把这个请求转发到 下面 proxy_pass 的地址上。
举个例子:
a、如上图,如果proxy_pass 的URL以 / 结尾 ,那么请求转发的时候 将 不会 带上 匹配到的 /api/ ,也就是说如果 登录请求 URL是 localhost:60001/api/user/login,proxy_pass URL 是 http://a.xx.com:8080/platform/, Nginx将会 把这个请求转发成 http://a.xx.com:8080/platform/user/login
b、如果proxy_pass 的URL不以 / 结尾 ,那么请求转发的时候 将 会带上 匹配到的 /api/ ,也就是说如果 登录请求 URL是 localhost:60001/api/user/login,proxy_pass URL 是 http://a.xx.com:8080/platform/, Nginx将会 把这个请求转发成 http://a.xx.com:8080/platform/api/user/login
3、一般我们登录之后服务器会通过Set-Cookie把token写回到我们本地,如果不设置 proxy_cookie_path 的话,服务器Set-Cookie命令会失效,本地存不了cookie,从而导致token丢失。
这里proxy_cookie_path有一点需要注意的是 如果 proxy_pass URL 是 http://a.xx.com:8080/platform/ 这种情况 proxy_cookie_path应该设置成 /platform/ / (注意两个斜杠之间有空格)。
如果 proxy_pass URL 是 http://a.xx.com:8080/这种情况 proxy_cookie_path应该设置成 / / (注意两个斜杠之间有空格)
重启下nginx,你就会发现一切都正常了。
好了,该说的都说完了,希望各位前端同学们能够更加高效的开发前端项目。
作者:爱吃兔子的小萝卜
来源:****
原文:https://blog.****.net/cjd6568358/article/details/51871039
版权声明:本文为博主原创文章,转载请附上博文链接!