最近在寫的一個項目,採用先後端分離的方式進行開發,登陸認證使用的是SpringSecurity框架。前端
在項目部署的時候出現了一個問題,在本身電腦上運行的時候一切順暢,但是部署到服務器上就一直登陸失敗,分別測試了前端和後端的代碼,獨立運行沒有問題,打開F12查看返回的提示是發生了重定向。nginx
起初覺得是Security的配置問題,但是試來試去都沒有什麼做用,依然登陸不上。折騰半天無果後,來才考慮到nginx,只有它不同。security是根據url進行攔截的,是否是在反向代理的時候出了些貓膩呢?後端
在網上查了一圈,果真問題發生在Nginx上,修改一下Nginx的配置。服務器
原來的配置 proxy_pass http://127.0.0.1:8080 改後的配置 proxy_pass http://127.0.0.1:8080/
加了一個斜槓,問題就解決了。app
爲啥少了個斜槓就不行了呢?原來問題是Nginx代理的路徑和項目的context-path不匹配致使的。在每一個module的application.yml文件均可以配置server.servlet.context-path這個屬性。若是進行不配置的話,它的默認值是''/'',這也就是爲何我在Nginx里加了一個斜槓問題就解決了。context-path的做用與 @RequestMapping 相似,我理解@RequestMapping用於區分不一樣的Controller,而context-path的主要做用是爲了區分不一樣的模塊,這一點在使用反向代理的時候尤爲重要,反向代理服務器須要經過區分context-path去辨別到底要代理哪一個服務,若是找不到,它就要報錯。 框架