Spring + Spring Security + Vue 前后端分离项目,点击用户退出,Nginx代理端口重定向端口错误分析

虾米哥 阅读:180 2021-03-31 12:54:55 评论:0

前提条件:Spring + Spring Security + Vue 前后端分离项目

实现操作情况:用户点击退出按钮,调用后台接口执行spring security 默认退出方法(/logout)

后台源码:

	@RequestMapping(value = "/invalidate", method = { RequestMethod.POST, RequestMethod.GET }) 
	@ApiOperation(value = "注销") 
	public String logoutPage(HttpServletRequest request, HttpServletResponse response) { 
		securityUtils.cleanUserInfo(); 
		return "redirect:/logout"; 
	}

项目部署实际情况是:nginx 使用8084 端口 代理后台(Tomcat)服务8815 端口

nginx 配置

 server { 
        listen       8084; 
        server_name  192.168.1.73 localhost; 
		server_name_in_redirect off; 
 
        #charset koi8-r; 
 
        #access_log  logs/host.access.log  main; 
 
		rewrite  ^(.*)(?i)jsessionid(.*)$  /  redirect; 
 
        location / { 
			root   E:/nginx-1.18.0/zrzyj; 
			index  index.html index.htm; 
			try_files $uri $uri/ /index.html; 
        } 
 
        location ~/erms { 
			#Proxy Settings 
 
			add_header Access-Control-Allow-Origin $http_origin; 
			add_header Access-Control-Allow-Headers *; 
			add_header Access-Control-Allow-Methods *; 
 
			proxy_redirect     off; 
			proxy_set_header   Host             $host:$proxy_port; 
			proxy_set_header   X-Real-IP        $remote_addr; 
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
			proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
			proxy_max_temp_file_size 0; 
			proxy_connect_timeout      90; 
			proxy_send_timeout         90; 
			proxy_read_timeout         90;			 
			proxy_pass http://192.168.1.73:8815; 
 
        } 
 
        #error_page  404              /404.html; 
 
        # redirect server error pages to the static page /50x.html 
        # 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
 
        
    }

每次请求的退出接口是:http://localhost:8084/****,导出项目用户无法正常退出 。

问题解决:经过google 后,发现是我的代理头信息配置错误,代理头信息应该配置为:

正确:

proxy_set_header   Host             $host:$server_port;

错误

proxy_set_header   Host            $host:$proxy_port;

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

一个IT知识分享的公众号